# APIStead, full machine-readable catalogue > The steady home for agent APIs. Pay per call in USDC on Base. No API keys. Discovery is free. Marketplace status: not accepting new listing submissions. All live APIs are first-party APIs built and operated by APIStead Labs. Generated: 2026-11-14T04:08:41.669Z Site: https://x402.apistead.qd.je MCP: https://x402.apistead.qd.je/mcp OpenAPI: https://x402.apistead.qd.je/openapi.json Search: https://x402.apistead.qd.je/agent/search?q= List: https://x402.apistead.qd.je/agent/list Receipts: https://x402.apistead.qd.je/agent/receipts Skill: https://x402.apistead.qd.je/skill API reference: https://x402.apistead.qd.je/api MCP guide: https://x402.apistead.qd.je/mcp-docs Listings: 10 Providers: 1 --- # Geocoding & Reverse Geocoding API Address to coordinates, coordinates to address. | Field | Value | | --- | --- | | Provider | APIStead Labs | | Category | Weather & Geospatial | | Networks | Base | | Price | $0.001 per call | | Base URL | https://apistead.qd.je/api/v1 | | Verification | verified (2/2 routes) | | Last verified | 2026-11-13T13:52:22.884Z | | Receipt | https://basescan.org/tx/0x895d6612a320ee74cb276d1ecd31da3768f208d4d4919c4d21ea67b07e3b9cf0 | | JSON | https://x402.apistead.qd.je/api/apis/geocoding-api | | Markdown | https://x402.apistead.qd.je/api/apis/geocoding-api/md | | MCP | https://apistead.qd.je/mcp | | API reference | https://x402.apistead.qd.je/api | | OpenAPI | https://x402.apistead.qd.je/openapi.json | ## For AI agents Convert a free-text address or place into coordinates and a normalised address, or reverse geocode coordinates. ## Scope Does not validate postal deliverability or rooftop accuracy. Uses OpenStreetMap data and is not a legal boundary source. ## Agent intents - geocode an address - turn coordinates into an address - find latitude and longitude for a place - normalise an address for an agent Geocoding is a foundational agent tool. This API handles forward geocoding (address to coordinates) and reverse geocoding (coordinates to address), with a confidence score and normalized components. It is designed for chaining: the response is small, stable and includes a `place_id` so an agent can refer to the same place across calls. The preview uses OpenStreetMap Nominatim with a proper user agent and caching. For production volume, swap in a commercial geocoder behind the same response shape. ## Endpoints ### GET /geocode?address={address} Forward geocode an address. - URL: https://apistead.qd.je/api/v1/geocode?address={address} - Price: $0.001 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.608Z - Latency: 3 ms - Uptime (30d): 86.87% Example request: ```http GET https://apistead.qd.je/api/v1/geocode?address=10%20Downing%20Street%20London ``` Example response: ```json { "lat": 51.5034, "lon": -0.1276, "source": "openstreetmap", "place_id": "osm:relation:1879842", "confidence": 0.95, "formatted_address": "10 Downing Street, London, SW1A 2AA, United Kingdom" } ``` ### GET /reverse?lat={lat}&lon={lon} Reverse geocode a coordinate. - URL: https://apistead.qd.je/api/v1/reverse?lat={lat}&lon={lon} - Price: $0.001 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.628Z - Latency: 15 ms - Uptime (30d): 86.87% Example request: ```http GET https://apistead.qd.je/api/v1/reverse?lat=51.5034&lon=-0.1276 ``` Example response: ```json { "city": "London", "source": "openstreetmap", "country": "United Kingdom", "place_id": "osm:relation:1879842", "country_code": "gb", "formatted_address": "10 Downing Street, London, SW1A 2AA, United Kingdom" } ``` ## Payment Every paid route uses x402 over HTTP. Call the route without payment to receive a 402 challenge, then pay the quoted USDC amount and retry. The 402 challenge is the authoritative source for price, asset, network and pay-to address. Reading this record and the discovery API is free. - Protocol: x402 v2 - Asset: USDC - Networks: Base - Price: $0.001 per call ## Verification - State: verified - Routes verified: 2/2 - Last verified: 2026-11-13T13:52:22.884Z - Receipt: https://basescan.org/tx/0x895d6612a320ee74cb276d1ecd31da3768f208d4d4919c4d21ea67b07e3b9cf0 ## Agent links - JSON: https://x402.apistead.qd.je/api/apis/geocoding-api - Markdown: https://x402.apistead.qd.je/api/apis/geocoding-api/md - Routes: https://x402.apistead.qd.je/agent/routes?id=geocoding-api - Receipts: https://x402.apistead.qd.je/agent/receipts?id=geocoding-api - API reference: https://x402.apistead.qd.je/api - MCP guide: https://x402.apistead.qd.je/mcp-docs - Agent skill: https://x402.apistead.qd.je/skill - OpenAPI: https://x402.apistead.qd.je/openapi.json - MCP: https://apistead.qd.je/mcp - Docs: https://apistead.qd.je/api --- # IP Geolocation API Turn an IP into a place and network. | Field | Value | | --- | --- | | Provider | APIStead Labs | | Category | Address & Location | | Networks | Base | | Price | $0.001 per call | | Base URL | https://apistead.qd.je/api/v1 | | Verification | verified (2/2 routes) | | Last verified | 2026-11-13T13:52:21.457Z | | Receipt | https://basescan.org/tx/0x638e71f65c2bcc4874eb8b4eb9fde19d59d9df33c94b12c95ead4913e1522d44 | | JSON | https://x402.apistead.qd.je/api/apis/ip-geolocation-api | | Markdown | https://x402.apistead.qd.je/api/apis/ip-geolocation-api/md | | MCP | https://apistead.qd.je/mcp | | API reference | https://x402.apistead.qd.je/api | | OpenAPI | https://x402.apistead.qd.je/openapi.json | ## For AI agents Turn a public IP address into approximate country, region, city, timezone, ASN and organisation data. ## Scope Approximate location only. Not for identity, precise location, private IPs or fraud decisions without another signal. ## Agent intents - look up an IP address - find the country and city for an IP - get the ASN for an IP - enrich a request with IP location Agents use IP data for fraud checks, localization, content routing, analytics and network diagnostics. This API returns a compact, stable shape with the fields that matter and a confidence-friendly `source` label. Use `/ip/me` to inspect the caller's own address, or `/ip/{address}` for a specific public IP. Private and reserved ranges are rejected with a clear error instead of a misleading location. ## Endpoints ### GET /ip/me Look up the caller's own public IP. - URL: https://apistead.qd.je/api/v1/ip/me - Price: $0.001 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.673Z - Latency: 11 ms - Uptime (30d): 86.87% Example request: ```http GET https://apistead.qd.je/api/v1/ip/me ``` Example response: ```json { "ip": "203.0.113.10", "city": "London", "country": "United Kingdom", "country_code": "GB" } ``` ### GET /ip/{ip} Look up a public IPv4 or IPv6 address. - URL: https://apistead.qd.je/api/v1/ip/{ip} - Price: $0.001 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.600Z - Latency: 3 ms - Uptime (30d): 85.86% Example request: ```http GET https://apistead.qd.je/api/v1/ip/8.8.8.8 ``` Example response: ```json { "ip": "8.8.8.8", "asn": "AS15169", "city": "San Jose", "region": "California", "source": "ipwho.is", "country": "United States", "latitude": 37.3394, "timezone": "America/Los_Angeles", "longitude": -121.895, "country_code": "US" } ``` ## Payment Every paid route uses x402 over HTTP. Call the route without payment to receive a 402 challenge, then pay the quoted USDC amount and retry. The 402 challenge is the authoritative source for price, asset, network and pay-to address. Reading this record and the discovery API is free. - Protocol: x402 v2 - Asset: USDC - Networks: Base - Price: $0.001 per call ## Verification - State: verified - Routes verified: 2/2 - Last verified: 2026-11-13T13:52:21.457Z - Receipt: https://basescan.org/tx/0x638e71f65c2bcc4874eb8b4eb9fde19d59d9df33c94b12c95ead4913e1522d44 ## Agent links - JSON: https://x402.apistead.qd.je/api/apis/ip-geolocation-api - Markdown: https://x402.apistead.qd.je/api/apis/ip-geolocation-api/md - Routes: https://x402.apistead.qd.je/agent/routes?id=ip-geolocation-api - Receipts: https://x402.apistead.qd.je/agent/receipts?id=ip-geolocation-api - API reference: https://x402.apistead.qd.je/api - MCP guide: https://x402.apistead.qd.je/mcp-docs - Agent skill: https://x402.apistead.qd.je/skill - OpenAPI: https://x402.apistead.qd.je/openapi.json - MCP: https://apistead.qd.je/mcp - Docs: https://apistead.qd.je/api --- # Sanctions & PEP Screening API A deterministic first pass against sanctions lists. | Field | Value | | --- | --- | | Provider | APIStead Labs | | Category | Compliance | | Networks | Base | | Price | $0.01 per call | | Base URL | https://apistead.qd.je/api/v1 | | Verification | verified (1/1 routes) | | Last verified | 2026-11-13T13:52:06.771Z | | Receipt | https://basescan.org/tx/0xcb840bab58dd774d117a9fa10bd337c58ad0be427cd9523f1b35a4b65fdf31cf | | JSON | https://x402.apistead.qd.je/api/apis/sanctions-screening-api | | Markdown | https://x402.apistead.qd.je/api/apis/sanctions-screening-api/md | | MCP | https://apistead.qd.je/mcp | | API reference | https://x402.apistead.qd.je/api | | OpenAPI | https://x402.apistead.qd.je/openapi.json | ## For AI agents Screen a name against a small sanctions and PEP sample and return candidate matches with a score and reason. ## Scope Preview sample only. Not an official sanctions list, legal advice or a replacement for a compliance officer. ## Agent intents - screen a name for sanctions - check a person against a PEP sample - run a first-pass compliance check - flag a name for manual review Compliance agents need a fast, explainable screening call. This endpoint takes a name, optional country and date of birth, and returns candidate matches with a score, the matched list and the reason for the match. The preview uses a small local sample so the workflow can be developed safely. Production replaces the sample with OFAC, EU, UN, UK and PEP datasets, refreshed on a schedule. The response shape is designed not to change. It is not a replacement for a compliance officer. It is a deterministic first pass that lets an agent decide whether to continue, request more data, or escalate. ## Endpoints ### POST /sanctions/screen Screen a name against the local sanctions and PEP sample. - URL: https://apistead.qd.je/api/v1/sanctions/screen - Price: $0.01 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.572Z - Latency: 4 ms - Uptime (30d): 84.85% Example request: ```http POST https://apistead.qd.je/api/v1/sanctions/screen {"name":"Ivan Petrov","country":"RU"} ``` Example response: ```json { "note": "Preview uses a local sample. Production uses refreshed official lists.", "matches": [], "screening_id": "scr_preview_01", "lists_checked": [ "OFAC_SAMPLE", "PEP_SAMPLE" ] } ``` ## Payment Every paid route uses x402 over HTTP. Call the route without payment to receive a 402 challenge, then pay the quoted USDC amount and retry. The 402 challenge is the authoritative source for price, asset, network and pay-to address. Reading this record and the discovery API is free. - Protocol: x402 v2 - Asset: USDC - Networks: Base - Price: $0.01 per call ## Verification - State: verified - Routes verified: 1/1 - Last verified: 2026-11-13T13:52:06.771Z - Receipt: https://basescan.org/tx/0xcb840bab58dd774d117a9fa10bd337c58ad0be427cd9523f1b35a4b65fdf31cf ## Agent links - JSON: https://x402.apistead.qd.je/api/apis/sanctions-screening-api - Markdown: https://x402.apistead.qd.je/api/apis/sanctions-screening-api/md - Routes: https://x402.apistead.qd.je/agent/routes?id=sanctions-screening-api - Receipts: https://x402.apistead.qd.je/agent/receipts?id=sanctions-screening-api - API reference: https://x402.apistead.qd.je/api - MCP guide: https://x402.apistead.qd.je/mcp-docs - Agent skill: https://x402.apistead.qd.je/skill - OpenAPI: https://x402.apistead.qd.je/openapi.json - MCP: https://apistead.qd.je/mcp - Docs: https://apistead.qd.je/api --- # US ZIP Code API Validate and enrich any US ZIP code. | Field | Value | | --- | --- | | Provider | APIStead Labs | | Category | Address & Location | | Networks | Base | | Price | $0.001-$0.002 per call | | Base URL | https://apistead.qd.je/api/v1 | | Verification | verified (2/2 routes) | | Last verified | 2026-11-13T13:52:19.855Z | | Receipt | https://basescan.org/tx/0x73b29cce8aa1258c1fbb2e89281e070df0456f00245e5f17cb9c2be161b3c69e | | JSON | https://x402.apistead.qd.je/api/apis/us-zip-code-api | | Markdown | https://x402.apistead.qd.je/api/apis/us-zip-code-api/md | | MCP | https://apistead.qd.je/mcp | | API reference | https://x402.apistead.qd.je/api | | OpenAPI | https://x402.apistead.qd.je/openapi.json | ## For AI agents Resolve a US ZIP code to a city, state and coordinates, or measure the distance between two ZIP centroids. ## Scope US ZIP codes only. Does not validate street addresses, ZIP+4 delivery points or international postal codes. ## Agent intents - look up a US ZIP code - get city and state for a ZIP - calculate distance between ZIP codes - validate a US ZIP before delivery US addresses are inconsistent. Agents see `10001`, `10001-1234`, `New York, NY 10001` and a dozen variants of the same place. This API normalizes the ZIP, validates it, and returns the city, state and coordinates. Use it for delivery eligibility, address enrichment, property due diligence, territory assignment and any workflow where an agent needs to turn a ZIP into a place before it spends money on the next call. The response includes a `source` and `retrieved_at` timestamp so the agent can carry evidence forward. The preview deployment uses a public ZIP source with a local fallback for common codes. ## Endpoints ### GET /us-zip/{zip} Validate a US ZIP code and return city, state and coordinates. - URL: https://apistead.qd.je/api/v1/us-zip/{zip} - Price: $0.001 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.641Z - Latency: 9 ms - Uptime (30d): 86.87% Example request: ```http GET https://apistead.qd.je/api/v1/us-zip/10001 ``` Example response: ```json { "zip": "10001", "city": "New York", "state": "NY", "source": "zippopotam.us", "latitude": 40.7484, "longitude": -73.9967, "retrieved_at": "2026-11-09T20:00:00Z" } ``` ### GET /us-zip/distance?from={zip1}&to={zip2} Great-circle distance between two US ZIP centroids. - URL: https://apistead.qd.je/api/v1/us-zip/distance?from={zip1}&to={zip2} - Price: $0.002 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.657Z - Latency: 9 ms - Uptime (30d): 86.87% Example request: ```http GET https://apistead.qd.je/api/v1/us-zip/distance?from=10001&to=90210 ``` Example response: ```json { "to": "90210", "from": "10001", "distance_km": 3944.2, "distance_miles": 2450.8 } ``` ## Payment Every paid route uses x402 over HTTP. Call the route without payment to receive a 402 challenge, then pay the quoted USDC amount and retry. The 402 challenge is the authoritative source for price, asset, network and pay-to address. Reading this record and the discovery API is free. - Protocol: x402 v2 - Asset: USDC - Networks: Base - Price: $0.001-$0.002 per call ## Verification - State: verified - Routes verified: 2/2 - Last verified: 2026-11-13T13:52:19.855Z - Receipt: https://basescan.org/tx/0x73b29cce8aa1258c1fbb2e89281e070df0456f00245e5f17cb9c2be161b3c69e ## Agent links - JSON: https://x402.apistead.qd.je/api/apis/us-zip-code-api - Markdown: https://x402.apistead.qd.je/api/apis/us-zip-code-api/md - Routes: https://x402.apistead.qd.je/agent/routes?id=us-zip-code-api - Receipts: https://x402.apistead.qd.je/agent/receipts?id=us-zip-code-api - API reference: https://x402.apistead.qd.je/api - MCP guide: https://x402.apistead.qd.je/mcp-docs - Agent skill: https://x402.apistead.qd.je/skill - OpenAPI: https://x402.apistead.qd.je/openapi.json - MCP: https://apistead.qd.je/mcp - Docs: https://apistead.qd.je/api --- # Coordinates & Distance API Distance, midpoint and bearing between coordinates. | Field | Value | | --- | --- | | Provider | APIStead Labs | | Category | Weather & Geospatial | | Networks | Base | | Price | $0.001 per call | | Base URL | https://apistead.qd.je/api/v1 | | Verification | verified (1/1 routes) | | Last verified | 2026-11-13T13:52:15.489Z | | Receipt | https://basescan.org/tx/0x890aa1ed1cc3531c8e2d69a6f1d74acc3473a2db6dadc1665027c78037ea7164 | | JSON | https://x402.apistead.qd.je/api/apis/coordinates-distance-api | | Markdown | https://x402.apistead.qd.je/api/apis/coordinates-distance-api/md | | MCP | https://apistead.qd.je/mcp | | API reference | https://x402.apistead.qd.je/api | | OpenAPI | https://x402.apistead.qd.je/openapi.json | ## For AI agents Calculate great-circle distance, midpoint and bearing between two coordinate pairs. ## Scope Straight-line geometry only. Does not route, account for roads, traffic, elevation or travel time. ## Agent intents - calculate distance between coordinates - find the midpoint between two points - get bearing between two locations - measure a straight-line distance Agents often need a straightforward geometric answer without a full mapping stack: how far apart are two points, what is the midpoint, what bearing should a route start on? This API returns all three in one call, with kilometres, miles and nautical miles. It is pure math, so it is fast, cache-friendly and inexpensive to verify. ## Endpoints ### GET /distance?from={lat},{lon}&to={lat},{lon} Great-circle distance, midpoint and initial bearing. - URL: https://apistead.qd.je/api/v1/distance?from={lat},{lon}&to={lat},{lon} - Price: $0.001 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.593Z - Latency: 4 ms - Uptime (30d): 86.87% Example request: ```http GET https://apistead.qd.je/api/v1/distance?from=51.5074,-0.1278&to=40.7128,-74.0060 ``` Example response: ```json { "to": { "lat": 40.7128, "lon": -74.006 }, "from": { "lat": 51.5074, "lon": -0.1278 }, "midpoint": { "lat": 52, "lon": -37 }, "distance_km": 5570.2, "distance_miles": 3461.2, "initial_bearing_deg": 288.4, "distance_nautical_miles": 3007.7 } ``` ## Payment Every paid route uses x402 over HTTP. Call the route without payment to receive a 402 challenge, then pay the quoted USDC amount and retry. The 402 challenge is the authoritative source for price, asset, network and pay-to address. Reading this record and the discovery API is free. - Protocol: x402 v2 - Asset: USDC - Networks: Base - Price: $0.001 per call ## Verification - State: verified - Routes verified: 1/1 - Last verified: 2026-11-13T13:52:15.489Z - Receipt: https://basescan.org/tx/0x890aa1ed1cc3531c8e2d69a6f1d74acc3473a2db6dadc1665027c78037ea7164 ## Agent links - JSON: https://x402.apistead.qd.je/api/apis/coordinates-distance-api - Markdown: https://x402.apistead.qd.je/api/apis/coordinates-distance-api/md - Routes: https://x402.apistead.qd.je/agent/routes?id=coordinates-distance-api - Receipts: https://x402.apistead.qd.je/agent/receipts?id=coordinates-distance-api - API reference: https://x402.apistead.qd.je/api - MCP guide: https://x402.apistead.qd.je/mcp-docs - Agent skill: https://x402.apistead.qd.je/skill - OpenAPI: https://x402.apistead.qd.je/openapi.json - MCP: https://apistead.qd.je/mcp - Docs: https://apistead.qd.je/api --- # Email Verification API Real-time email verification for AI agents, with a quality score. | Field | Value | | --- | --- | | Provider | APIStead Labs | | Category | Verification | | Networks | Base | | Price | $0.001 per call | | Base URL | https://apistead.qd.je/api/v1 | | Verification | verified (1/1 routes) | | Last verified | 2026-11-13T13:52:26.507Z | | Receipt | https://basescan.org/tx/0x921a420d189953841232d7d6771f1352b34a5bec27ce76c4701aa6b958755a9e | | JSON | https://x402.apistead.qd.je/api/apis/email-verification-api | | Markdown | https://x402.apistead.qd.je/api/apis/email-verification-api/md | | MCP | https://apistead.qd.je/mcp | | API reference | https://x402.apistead.qd.je/api | | OpenAPI | https://x402.apistead.qd.je/openapi.json | ## For AI agents Check email syntax, domain and MX records before an agent sends a signup, invoice or outreach message. ## Scope Domain-level check only. Does not prove the mailbox exists, send a test message or perform SMTP probing. Disposable and role lists are curated samples, not a licensed feed. ## Agent intents - validate an email address - check if an email domain can receive mail - screen an email before signup - detect a disposable email domain Real-time email verification for AI agents. Before an agent sends a signup, invoice or outreach email, it should know whether the domain can receive mail. This API validates syntax, normalises the address, resolves MX records, detects null MX and implicit MX, flags disposable and role accounts, and suggests common domain typos. The response includes a `verdict` (`deliverable`, `risky`, `undeliverable`, `unknown`), a `reason` code and a quality score from 0 to 100. It does not perform an SMTP handshake or prove that a mailbox exists, so it is safe to run at volume. ## Endpoints ### POST /email/verify Verify email syntax, domain and MX records. - URL: https://apistead.qd.je/api/v1/email/verify - Price: $0.001 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.709Z - Latency: 5 ms - Uptime (30d): 87.88% Example request: ```http POST https://apistead.qd.je/api/v1/email/verify {"email":"hello@example.com"} ``` Example response: ```json { "mx": [], "note": "Domain-level check only. Mailbox existence is not confirmed and no message is sent.", "email": "person@example.com", "checks": [ { "name": "syntax", "detail": "Email syntax is valid.", "status": "pass" }, { "name": "mx", "detail": "No MX record was found.", "status": "fail" } ], "domain": "example.com", "reason": "no_mx", "null_mx": false, "preview": true, "verdict": "undeliverable", "checked_at": "2026-11-10T00:00:00Z", "confidence": 0, "disposable": false, "suggestion": null, "implicit_mx": false, "accepts_mail": false, "role_account": false, "free_provider": false, "mailbox_checked": false, "normalized_email": "person@example.com" } ``` ## Payment Every paid route uses x402 over HTTP. Call the route without payment to receive a 402 challenge, then pay the quoted USDC amount and retry. The 402 challenge is the authoritative source for price, asset, network and pay-to address. Reading this record and the discovery API is free. - Protocol: x402 v2 - Asset: USDC - Networks: Base - Price: $0.001 per call ## Verification - State: verified - Routes verified: 1/1 - Last verified: 2026-11-13T13:52:26.507Z - Receipt: https://basescan.org/tx/0x921a420d189953841232d7d6771f1352b34a5bec27ce76c4701aa6b958755a9e ## FAQ ### Does this API confirm that a mailbox exists? No. It verifies the domain and its mail route. It does not use SMTP, does not send a message, and returns mailbox_checked: false. A deliverable verdict means the domain can accept mail, not that the specific inbox exists. ### What does the quality score mean? The quality score from 0 to 100 combines syntax, MX, implicit MX, disposable-domain, role-account and typo signals. It is a confidence indicator, not a guarantee of delivery. ### Is this a real-time API? Yes. The API performs the domain and MX checks during the request and returns a structured result in one call. It does not run a slow SMTP mailbox probe. ### Does it send email or use SMTP? No. The API uses DNS only. It does not connect to SMTP port 25, does not send mail and does not store the email address. ### How much does a call cost and how do agents pay? A call costs $0.001 USDC on Base. The agent reads the x402 402 challenge, pays the provider wallet directly and retries. There is no API key or subscription. ### What is a null MX record? A null MX record tells senders that the domain does not accept email. The API marks that domain as undeliverable instead of treating the missing mailbox as a temporary failure. ## Agent links - JSON: https://x402.apistead.qd.je/api/apis/email-verification-api - Markdown: https://x402.apistead.qd.je/api/apis/email-verification-api/md - Routes: https://x402.apistead.qd.je/agent/routes?id=email-verification-api - Receipts: https://x402.apistead.qd.je/agent/receipts?id=email-verification-api - API reference: https://x402.apistead.qd.je/api - MCP guide: https://x402.apistead.qd.je/mcp-docs - Agent skill: https://x402.apistead.qd.je/skill - OpenAPI: https://x402.apistead.qd.je/openapi.json - MCP: https://apistead.qd.je/mcp - Docs: https://apistead.qd.je/api --- # Global Weather API Current conditions and forecasts by coordinates. | Field | Value | | --- | --- | | Provider | APIStead Labs | | Category | Weather & Geospatial | | Networks | Base | | Price | $0.001-$0.002 per call | | Base URL | https://apistead.qd.je/api/v1 | | Verification | verified (2/2 routes) | | Last verified | 2026-11-13T13:52:10.060Z | | Receipt | https://basescan.org/tx/0x8a3a1b940900f2a67a7c29aa5dfb9aec316b728a64bb9bb97ac992fb9d9afe85 | | JSON | https://x402.apistead.qd.je/api/apis/global-weather-api | | Markdown | https://x402.apistead.qd.je/api/apis/global-weather-api/md | | MCP | https://apistead.qd.je/mcp | | API reference | https://x402.apistead.qd.je/api | | OpenAPI | https://x402.apistead.qd.je/openapi.json | ## For AI agents Get current weather conditions or a daily forecast for a latitude and longitude. ## Scope Weather only. Does not provide road conditions, air quality, alerts or historical climate data. ## Agent intents - get the current weather - get a weather forecast for coordinates - check conditions before a delivery - add weather context to a travel workflow Weather is a classic agent utility: delivery planning, event operations, travel, agriculture and insurance. This API returns current conditions and a short forecast without a dashboard or an API key. The preview uses Open-Meteo, a free open weather API, and normalizes the response into a small shape with units and a `generated_at` timestamp. ## Endpoints ### GET /weather/current?lat={lat}&lon={lon} Current conditions for a coordinate. - URL: https://apistead.qd.je/api/v1/weather/current?lat={lat}&lon={lon} - Price: $0.001 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.558Z - Latency: 3 ms - Uptime (30d): 84.85% Example request: ```http GET https://apistead.qd.je/api/v1/weather/current?lat=51.5074&lon=-0.1278 ``` Example response: ```json { "source": "open-meteo", "location": { "lat": 51.5074, "lon": -0.1278, "timezone": "Europe/London" }, "wind_kph": 14, "condition": "partly_cloudy", "generated_at": "2026-11-09T20:00:00Z", "temperature_c": 11.4 } ``` ### GET /weather/forecast?lat={lat}&lon={lon}&days={days} Daily forecast for up to 7 days. - URL: https://apistead.qd.je/api/v1/weather/forecast?lat={lat}&lon={lon}&days={days} - Price: $0.002 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.565Z - Latency: 4 ms - Uptime (30d): 84.85% Example request: ```http GET https://apistead.qd.je/api/v1/weather/forecast?lat=51.5074&lon=-0.1278&days=3 ``` Example response: ```json { "days": [ { "date": "2026-11-10", "low_c": 7, "high_c": 13, "condition": "rain" }, { "date": "2026-11-11", "low_c": 6, "high_c": 12, "condition": "cloudy" } ], "source": "open-meteo" } ``` ## Payment Every paid route uses x402 over HTTP. Call the route without payment to receive a 402 challenge, then pay the quoted USDC amount and retry. The 402 challenge is the authoritative source for price, asset, network and pay-to address. Reading this record and the discovery API is free. - Protocol: x402 v2 - Asset: USDC - Networks: Base - Price: $0.001-$0.002 per call ## Verification - State: verified - Routes verified: 2/2 - Last verified: 2026-11-13T13:52:10.060Z - Receipt: https://basescan.org/tx/0x8a3a1b940900f2a67a7c29aa5dfb9aec316b728a64bb9bb97ac992fb9d9afe85 ## Agent links - JSON: https://x402.apistead.qd.je/api/apis/global-weather-api - Markdown: https://x402.apistead.qd.je/api/apis/global-weather-api/md - Routes: https://x402.apistead.qd.je/agent/routes?id=global-weather-api - Receipts: https://x402.apistead.qd.je/agent/receipts?id=global-weather-api - API reference: https://x402.apistead.qd.je/api - MCP guide: https://x402.apistead.qd.je/mcp-docs - Agent skill: https://x402.apistead.qd.je/skill - OpenAPI: https://x402.apistead.qd.je/openapi.json - MCP: https://apistead.qd.je/mcp - Docs: https://apistead.qd.je/api --- # Spotify API for AI Agents Spotify API, metadata for agents: playlists, albums, artists and tracks. Complete discographies are in v2. | Field | Value | | --- | --- | | Provider | APIStead Labs | | Category | Media | | Networks | Base | | Price | $0.02 per call | | Base URL | https://apistead.qd.je/api/v1 | | Verification | verified (5/5 routes) | | Last verified | 2026-11-13T13:53:03.203Z | | Receipt | https://basescan.org/tx/0xfae6bdc0cf2816bae6a4d17a1ee9b4fda79d45dc7a5abc3fd5f3b6ee639bc58c | | JSON | https://x402.apistead.qd.je/api/apis/spotify-api | | Markdown | https://x402.apistead.qd.je/api/apis/spotify-api/md | | MCP | https://apistead.qd.je/mcp | | API reference | https://x402.apistead.qd.je/api | | OpenAPI | https://x402.apistead.qd.je/openapi.json | ## For AI agents Spotify metadata for agents: resolve playlist, album, artist, artist top-tracks and track links or ids, with search and complete discographies in the v2 listing. Artist responses include audience stats, bio when published and top tracks. No auth or API key. ## Scope The current release covers public playlists, albums, artists, artist top tracks and tracks. Search and complete artist discographies are available in the Spotify v2 listing. Spotify's public metadata does not expose playlist creation dates or per-track added dates, so those fields are omitted. No playback control, downloads or user-library access. ## Agent intents - get a Spotify playlist - get a Spotify album - get a Spotify artist - get a Spotify artist bio - get a Spotify artist's monthly listeners and followers - get a Spotify track - get Spotify track metadata - get the album and copyright lines for a Spotify track - get a Spotify artist's top tracks - get an artist's top five tracks with album context - get the ranked top tracks for a Spotify artist - extract tracks from a Spotify playlist - extract tracks from a Spotify album - list artists and albums in a Spotify playlist - calculate the length of a Spotify playlist - resolve a Spotify URL, URI or id - get Spotify metadata without an API key - Spotify metadata API for AI agents Spotify metadata API for AI agents. The playlist, album, artist, artist top-tracks and track endpoints turn a Spotify URL, URI or 22-character id into a stable JSON shape. A playlist returns up to 100 ordered tracks with optional album enrichment. An album returns its full track list, disc and track numbers, type, release date and copyright lines. An artist returns one image, monthly listeners, followers, bio when Spotify publishes one, and top tracks. The artist top-tracks endpoint returns the same ranked top tracks with a limit parameter and album context on every track. A track returns its title, artists, album context, release date, duration, explicit flag, preview URL, artwork and copyright lines. Search and complete artist discographies are available in the Spotify v2 listing. Spotify's public metadata does not expose playlist creation dates or per-track added dates, so those fields are not returned. Playback control, downloads and user-library access are not included. ## Endpoints ### GET /spotify/album Get Spotify album metadata, cover art, artists, release date, copyright lines and the full ordered track list. - URL: https://apistead.qd.je/api/v1/spotify/album - Price: $0.02 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.869Z - Latency: 5 ms - Uptime (30d): 89% Example request: ```http GET https://apistead.qd.je/api/v1/spotify/album?url=https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI ``` Example response: ```json { "album": { "id": "5WulAOx9ilWy1h8UGZ1gkI", "uri": "spotify:album:5WulAOx9ilWy1h8UGZ1gkI", "url": "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI", "name": "Deadbeat", "type": "album", "artists": [ { "id": "5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" } ], "playable": true, "copyrights": [ "℗ 2025 Columbia Records, a Division of Sony Music Entertainment, under exclusive license from Tame Impala" ], "cover_image": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b", "duration_ms": 3365184, "track_count": 12, "release_date": "2025-10-17", "explicit_count": 4, "duration_formatted": "56:05" }, "source": "spotify", "tracks": [ { "id": "4whkhyXTrTgHKZzkUvdwoq", "uri": "spotify:track:4whkhyXTrTgHKZzkUvdwoq", "url": "https://open.spotify.com/track/4whkhyXTrTgHKZzkUvdwoq", "album": { "id": "5WulAOx9ilWy1h8UGZ1gkI", "url": "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI", "name": "Deadbeat", "release_date": "2025-10-17" }, "title": "My Old Ways", "artists": [ { "id": "5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" } ], "artwork": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b", "explicit": true, "playable": true, "position": 1, "disc_number": 1, "duration_ms": 298783, "preview_url": "https://p.scdn.co/mp3-preview/...", "track_number": 1, "duration_formatted": "4:59" } ], "preview": false, "summary": { "duration_ms": 3365184, "track_count": 12, "explicit_count": 4, "unique_artists": 1, "returned_tracks": 12, "duration_formatted": "56:05", "average_track_duration_ms": 280432 }, "retrieved_at": "2026-11-10T00:00:00Z" } ``` ### GET /spotify/artist Get a Spotify artist profile with monthly listeners, followers, bio when published and top tracks with collaborator ids and album context. - URL: https://apistead.qd.je/api/v1/spotify/artist - Price: $0.02 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.722Z - Latency: 4 ms - Uptime (30d): 86.87% Example request: ```http GET https://apistead.qd.je/api/v1/spotify/artist?url=https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb ``` Example response: ```json { "artist": { "id": "5INjqkS1o8h1imAzPqGZBb", "bio": "Kevin Parker has emerged as one of the most influential voices of the last decade. A singular artist renowned for carving out a distinct sound all of his own.", "uri": "spotify:artist:5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala", "image": "https://i.scdn.co/image/ab6761610000e5ebe412a782245eb20d9626c601", "followers": 12374967, "monthly_listeners": 65309089 }, "source": "spotify", "preview": false, "summary": { "top_tracks": 5, "duration_ms": 1079294, "explicit_count": 4, "unique_artists": 6, "duration_formatted": "17:59" }, "top_tracks": [ { "id": "7bxaFZ1O3cHkgLKMsdC3xR", "uri": "spotify:track:7bxaFZ1O3cHkgLKMsdC3xR", "url": "https://open.spotify.com/track/7bxaFZ1O3cHkgLKMsdC3xR", "album": { "id": "5WulAOx9ilWy1h8UGZ1gkI", "url": "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI", "name": "Deadbeat", "release_date": "2025-10-17" }, "title": "Loser", "artists": [ { "id": "5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" } ], "artwork": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b", "explicit": true, "playable": true, "position": 1, "duration_ms": 223069, "preview_url": "https://p.scdn.co/mp3-preview/0015e9347a45b62215447eba657b2fc3ce279d2d", "duration_formatted": "3:43" }, { "id": "5yvVYFDUpbnjcnRBgjwTzM", "uri": "spotify:track:5yvVYFDUpbnjcnRBgjwTzM", "url": "https://open.spotify.com/track/5yvVYFDUpbnjcnRBgjwTzM", "album": { "id": "6KFq3hJB6JnNvDbEHRvPoK", "url": "https://open.spotify.com/album/6KFq3hJB6JnNvDbEHRvPoK", "name": "Dracula (with JENNIE)", "release_date": "2026-02-06" }, "title": "Dracula (with JENNIE)", "artists": [ { "id": "5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" }, { "id": "250b0Wlc5Vk0CoUsaCY84M", "url": "https://open.spotify.com/artist/250b0Wlc5Vk0CoUsaCY84M", "name": "JENNIE" } ], "artwork": "https://i.scdn.co/image/ab67616d0000b273c7c031ce9d06b131f8563676", "explicit": true, "playable": true, "position": 2, "duration_ms": 209720, "preview_url": "https://p.scdn.co/mp3-preview/631b9cec18551169382ef4be4f01e40bc5523441", "duration_formatted": "3:30" } ], "retrieved_at": "2026-11-11T00:00:00Z" } ``` ### GET /spotify/playlist Get Spotify playlist cover art, owner, ordered tracks, artists, artwork, duration and optional album enrichment. - URL: https://apistead.qd.je/api/v1/spotify/playlist - Price: $0.02 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.781Z - Latency: 5 ms - Uptime (30d): 87.88% Example request: ```http GET https://apistead.qd.je/api/v1/spotify/playlist?url=https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M&include_albums=true&limit=20&album_limit=10 ``` Example response: ```json { "source": "spotify", "tracks": [ { "album": { "name": "Stop The Wedding!", "release_date": "2026-08-07" }, "title": "Stop The Wedding!", "artists": [ { "id": "6P5NO5hzJbuOqSdyPB7SJM", "url": "https://open.spotify.com/artist/6P5NO5hzJbuOqSdyPB7SJM", "name": "Ashe" } ], "artwork": "https://i.scdn.co/image/ab67616d0000b2730893a0c33fd4b8497b0ef2f6", "explicit": false, "position": 1, "duration_formatted": "3:19" } ], "preview": false, "summary": { "unique_albums": 17, "unique_artists": 18, "returned_tracks": 20, "duration_formatted": "1:05:20" }, "playlist": { "id": "37i9dQZF1DXcBWIGoYBM5M", "name": "Today's Top Hits", "owner": { "id": "spotify", "url": "https://open.spotify.com/user/spotify", "name": "Spotify", "avatar": "https://i.scdn.co/image/ab6775700000ee8555c25988a6ac314394d3fbf5" }, "saves": 33606582, "cover_image": "https://image-cdn-fa.spotifycdn.com/image/ab67706f00000003e06fabee7abffa117bed662f", "description": "The hottest 50. Cover: Ashe", "track_count": 50, "explicit_count": 11, "duration_formatted": "2:45:10" }, "retrieved_at": "2026-11-10T00:00:00Z", "album_enrichment": { "limit": 20, "limited": true, "requested": true, "enriched_tracks": 20 } } ``` ### GET /spotify/track Get Spotify track metadata, artists, album context, release date, copyright lines, duration, preview URL and artwork. - URL: https://apistead.qd.je/api/v1/spotify/track - Price: $0.02 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.762Z - Latency: 4 ms - Uptime (30d): 84.62% Example request: ```http GET https://apistead.qd.je/api/v1/spotify/track?url=https://open.spotify.com/track/4cOdK2wGLETKBW3PvgPWqT ``` Example response: ```json { "note": "Spotify track metadata, normalized for agents. Copyright lines are included when Spotify publishes them: © is the musical work and ℗ is the sound recording. Playback control, downloads and user-library access are not included.", "track": { "id": "4cOdK2wGLETKBW3PvgPWqT", "uri": "spotify:track:4cOdK2wGLETKBW3PvgPWqT", "url": "https://open.spotify.com/track/4cOdK2wGLETKBW3PvgPWqT", "album": { "id": "5Z9iiGl2FcIfa3BMiv6OIw", "url": "https://open.spotify.com/album/5Z9iiGl2FcIfa3BMiv6OIw", "name": "Whenever You Need Somebody", "release_date": "1987-11-12" }, "title": "Never Gonna Give You Up", "artists": [ { "id": "0gxyHStUsqpMadRV0Di1Qt", "url": "https://open.spotify.com/artist/0gxyHStUsqpMadRV0Di1Qt", "name": "Rick Astley" } ], "artwork": "https://i.scdn.co/image/ab67616d0000b273baf89eb11ec7c657805d2da0", "explicit": false, "playable": true, "copyrights": [ "© 1987 BMG Rights Management (UK) Limited", "℗ 1987 BMG Rights Management (UK) Limited" ], "duration_ms": 213573, "preview_url": "https://p.scdn.co/mp3-preview/40a780b231e5ed130483bec7917b6c9a4f8a4708", "release_date": "1987-11-12", "duration_formatted": "3:34" }, "source": "spotify", "preview": false, "retrieved_at": "2026-11-11T00:00:00Z" } ``` ### GET /spotify/artist/top-tracks Get a Spotify artist's ranked top tracks with album context, artists, duration, preview URL and artwork. - URL: https://apistead.qd.je/api/v1/spotify/artist/top-tracks - Price: $0.02 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.879Z - Latency: 7 ms - Uptime (30d): 85.53% Example request: ```http GET https://apistead.qd.je/api/v1/spotify/artist/top-tracks?url=https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb&limit=2 ``` Example response: ```json { "note": "Spotify artist top tracks, normalized for agents. Spotify's public artist page exposes up to five top tracks, and limit can return fewer. Each track includes album context. Playback control, downloads and user-library access are not included.", "artist": { "id": "5INjqkS1o8h1imAzPqGZBb", "bio": "Kevin Parker has emerged as one of the most influential voices of the last decade. A singular artist renowned for carving out a distinct sound all of his own.", "uri": "spotify:artist:5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala", "image": "https://i.scdn.co/image/ab6761610000e5ebe412a782245eb20d9626c601", "followers": 12382756, "monthly_listeners": 65309089 }, "source": "spotify", "preview": false, "summary": { "duration_ms": 432789, "explicit_count": 2, "unique_artists": 2, "requested_limit": 2, "returned_tracks": 2, "duration_formatted": "7:13", "available_top_tracks": 5 }, "top_tracks": [ { "id": "7bxaFZ1O3cHkgLKMsdC3xR", "uri": "spotify:track:7bxaFZ1O3cHkgLKMsdC3xR", "url": "https://open.spotify.com/track/7bxaFZ1O3cHkgLKMsdC3xR", "album": { "id": "5WulAOx9ilWy1h8UGZ1gkI", "url": "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI", "name": "Deadbeat", "release_date": "2025-10-17" }, "title": "Loser", "artists": [ { "id": "5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" } ], "artwork": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b", "explicit": true, "playable": true, "position": 1, "duration_ms": 223069, "preview_url": "https://p.scdn.co/mp3-preview/0015e9347a45b62215447eba657b2fc3ce279d2d", "duration_formatted": "3:43" }, { "id": "5yvVYFDUpbnjcnRBgjwTzM", "uri": "spotify:track:5yvVYFDUpbnjcnRBgjwTzM", "url": "https://open.spotify.com/track/5yvVYFDUpbnjcnRBgjwTzM", "album": { "id": "6KFq3hJB6JnNvDbEHRvPoK", "url": "https://open.spotify.com/album/6KFq3hJB6JnNvDbEHRvPoK", "name": "Dracula (with JENNIE)", "release_date": "2026-02-06" }, "title": "Dracula (with JENNIE)", "artists": [ { "id": "5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" }, { "id": "250b0Wlc5Vk0CoUsaCY84M", "url": "https://open.spotify.com/artist/250b0Wlc5Vk0CoUsaCY84M", "name": "JENNIE" } ], "artwork": "https://i.scdn.co/image/ab67616d0000b273c7c031ce9d06b131f8563676", "explicit": true, "playable": true, "position": 2, "duration_ms": 209720, "preview_url": "https://p.scdn.co/mp3-preview/631b9cec18551169382ef4be4f01e40bc5523441", "duration_formatted": "3:30" } ], "retrieved_at": "2026-11-11T00:00:00Z" } ``` ## Payment Every paid route uses x402 over HTTP. Call the route without payment to receive a 402 challenge, then pay the quoted USDC amount and retry. The 402 challenge is the authoritative source for price, asset, network and pay-to address. Reading this record and the discovery API is free. - Protocol: x402 v2 - Asset: USDC - Networks: Base - Price: $0.02 per call ## Verification - State: verified - Routes verified: 5/5 - Last verified: 2026-11-13T13:53:03.203Z - Receipt: https://basescan.org/tx/0xfae6bdc0cf2816bae6a4d17a1ee9b4fda79d45dc7a5abc3fd5f3b6ee639bc58c ## FAQ ### What Spotify endpoints are available? Playlist, album, artist, artist top-tracks and track metadata are live now. Search and complete artist discographies are available in the Spotify v2 listing. Each route has its own request and response shape. ### What does the album endpoint return? It returns the album name, type, artists, release date, one cover image, total tracks, duration, explicit count, copyright lines and the full ordered track list with disc and track numbers. ### What does the artist endpoint return? It returns the artist name, one image, monthly listeners, followers, bio when Spotify publishes one and the artist's top five tracks with collaborator ids, profile URLs, album context and one artwork per track. ### Does the artist endpoint include a bio? Yes, when Spotify publishes one. Monthly listeners and followers are included when Spotify publishes them. The bio is the public About text from the artist page. ### What is the difference between the artist and artist top-tracks endpoints? The artist endpoint returns the artist profile plus the top five tracks. The artist top-tracks endpoint returns the same ranked tracks with a limit parameter from 1 to 5 and album context on every track. Use the top-tracks route when the agent only needs the ranked tracks. ### What does the track endpoint return? It returns the track title, artists with ids and profile URLs, album id, name, URL and release date, track release date, duration, explicit flag, playable state, preview URL, one artwork image and copyright lines when Spotify publishes them. ### Why are there two copyright lines in a track response? They are separate rights. The © line is the copyright notice for the musical work (composition and lyrics). The ℗ line is the phonogram notice for the sound recording (the master). Spotify publishes both when the rights holders supply them. The API returns each line in the order Spotify provides it, does not merge notices and returns an empty array when Spotify publishes none. ### Does this API require a Spotify account? No. The agent sends a public playlist, album, artist or track URL, URI or id and pays per call with x402. There is no Spotify login, OAuth flow or API key for the buyer. ### Does it download, play or stream music? No. The API returns metadata only. It does not download audio, control playback, access a user library or bypass Spotify access controls. ### How many tracks are returned? A playlist exposes up to 100 tracks, and the limit parameter can return fewer. An album returns its full track list. An artist returns the top five tracks shown on the public artist page. The artist top-tracks endpoint returns up to five tracks and accepts limit=1 to 5. ### Does the playlist endpoint include creation or added dates? No. Spotify's public playlist metadata does not expose the playlist creation date, last updated date, or per-track added timestamps. Those fields require an OAuth-based Spotify API, which this API does not use. ### What does include_albums do on the playlist route? It enriches the first playlist tracks with album id, name, URL and release date, and upgrades each track artwork to the largest available album image. Album enrichment uses extra metadata lookups and is capped by album_limit to keep latency predictable. ### How do I send a Spotify link? Use GET /api/v1/spotify/playlist, /album, /artist, /artist/top-tracks or /track with a url or id query parameter. All five routes also accept POST JSON with a url or id field. The value can be a Spotify URL, URI or 22-character id. ### How much does a call cost and how do agents pay? A playlist, album, artist, artist top-tracks or track call costs $0.02 USDC on Base. The agent reads the x402 402 challenge, pays the provider wallet directly and retries. There is no API key or subscription. ## Code examples ### Python ~~~python import asyncio import os from eth_account import Account from x402 import x402Client from x402.http.clients import x402HttpxClient from x402.mechanisms.evm import EthAccountSigner from x402.mechanisms.evm.exact.register import register_exact_evm_client account = Account.from_key(os.environ["EVM_PRIVATE_KEY"]) client = x402Client() register_exact_evm_client(client, EthAccountSigner(account)) async def main(): async with x402HttpxClient(client) as http: response = await http.get( "https://apistead.qd.je/api/v1/spotify/playlist", params={ "url": "https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M", "limit": 20, "include_albums": "true", "album_limit": 10, }, ) response.raise_for_status() print(response.json()) asyncio.run(main()) ~~~ ### JavaScript ~~~javascript import { x402Client } from "@x402/core/client"; import { ExactEvmScheme } from "@x402/evm/exact/client"; import { wrapFetchWithPayment } from "@x402/fetch"; import { privateKeyToAccount } from "viem/accounts"; const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY); const client = new x402Client(); // Base mainnet. client.register("eip155:8453", new ExactEvmScheme(account)); const paidFetch = wrapFetchWithPayment(fetch, client); const response = await paidFetch( "https://apistead.qd.je/api/v1/spotify/playlist", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ url: "https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M", limit: 20, include_albums: true, album_limit: 10, }), }, ); console.log(await response.json()); ~~~ ### cURL: read the 402 first ~~~bash curl -i "https://apistead.qd.je/api/v1/spotify/playlist?url=https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M&limit=3" ~~~ ### Python: album ~~~python import asyncio import os from eth_account import Account from x402 import x402Client from x402.http.clients import x402HttpxClient from x402.mechanisms.evm import EthAccountSigner from x402.mechanisms.evm.exact.register import register_exact_evm_client account = Account.from_key(os.environ["EVM_PRIVATE_KEY"]) client = x402Client() register_exact_evm_client(client, EthAccountSigner(account)) async def main(): async with x402HttpxClient(client) as http: response = await http.get( "https://apistead.qd.je/api/v1/spotify/album", params={"url": "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI"}, ) response.raise_for_status() print(response.json()) asyncio.run(main()) ~~~ ### JavaScript: album ~~~javascript import { x402Client } from "@x402/core/client"; import { ExactEvmScheme } from "@x402/evm/exact/client"; import { wrapFetchWithPayment } from "@x402/fetch"; import { privateKeyToAccount } from "viem/accounts"; const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY); const client = new x402Client(); // Base mainnet. client.register("eip155:8453", new ExactEvmScheme(account)); const paidFetch = wrapFetchWithPayment(fetch, client); const response = await paidFetch( "https://apistead.qd.je/api/v1/spotify/album", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ url: "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI", }), }, ); console.log(await response.json()); ~~~ ### cURL: album challenge ~~~bash curl -i "https://apistead.qd.je/api/v1/spotify/album?url=https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI" ~~~ ### Python: artist ~~~python import asyncio import os from eth_account import Account from x402 import x402Client from x402.http.clients import x402HttpxClient from x402.mechanisms.evm import EthAccountSigner from x402.mechanisms.evm.exact.register import register_exact_evm_client account = Account.from_key(os.environ["EVM_PRIVATE_KEY"]) client = x402Client() register_exact_evm_client(client, EthAccountSigner(account)) async def main(): async with x402HttpxClient(client) as http: response = await http.get( "https://apistead.qd.je/api/v1/spotify/artist", params={"url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb"}, ) response.raise_for_status() print(response.json()) asyncio.run(main()) ~~~ ### JavaScript: artist ~~~javascript import { x402Client } from "@x402/core/client"; import { ExactEvmScheme } from "@x402/evm/exact/client"; import { wrapFetchWithPayment } from "@x402/fetch"; import { privateKeyToAccount } from "viem/accounts"; const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY); const client = new x402Client(); // Base mainnet. client.register("eip155:8453", new ExactEvmScheme(account)); const paidFetch = wrapFetchWithPayment(fetch, client); const response = await paidFetch( "https://apistead.qd.je/api/v1/spotify/artist", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ url: "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", }), }, ); console.log(await response.json()); ~~~ ### cURL: artist challenge ~~~bash curl -i "https://apistead.qd.je/api/v1/spotify/artist?url=https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb" ~~~ ### Python: artist top tracks ~~~python import asyncio import os from eth_account import Account from x402 import x402Client from x402.http.clients import x402HttpxClient from x402.mechanisms.evm import EthAccountSigner from x402.mechanisms.evm.exact.register import register_exact_evm_client account = Account.from_key(os.environ["EVM_PRIVATE_KEY"]) client = x402Client() register_exact_evm_client(client, EthAccountSigner(account)) async def main(): async with x402HttpxClient(client) as http: response = await http.get( "https://apistead.qd.je/api/v1/spotify/artist/top-tracks", params={ "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "limit": 5, }, ) response.raise_for_status() print(response.json()) asyncio.run(main()) ~~~ ### JavaScript: artist top tracks ~~~javascript import { x402Client } from "@x402/core/client"; import { ExactEvmScheme } from "@x402/evm/exact/client"; import { wrapFetchWithPayment } from "@x402/fetch"; import { privateKeyToAccount } from "viem/accounts"; const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY); const client = new x402Client(); // Base mainnet. client.register("eip155:8453", new ExactEvmScheme(account)); const paidFetch = wrapFetchWithPayment(fetch, client); const response = await paidFetch( "https://apistead.qd.je/api/v1/spotify/artist/top-tracks", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ url: "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", limit: 5, }), }, ); console.log(await response.json()); ~~~ ### cURL: artist top tracks challenge ~~~bash curl -i "https://apistead.qd.je/api/v1/spotify/artist/top-tracks?url=https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb&limit=5" ~~~ ### Python: track ~~~python import asyncio import os from eth_account import Account from x402 import x402Client from x402.http.clients import x402HttpxClient from x402.mechanisms.evm import EthAccountSigner from x402.mechanisms.evm.exact.register import register_exact_evm_client account = Account.from_key(os.environ["EVM_PRIVATE_KEY"]) client = x402Client() register_exact_evm_client(client, EthAccountSigner(account)) async def main(): async with x402HttpxClient(client) as http: response = await http.get( "https://apistead.qd.je/api/v1/spotify/track", params={"url": "https://open.spotify.com/track/4cOdK2wGLETKBW3PvgPWqT"}, ) response.raise_for_status() print(response.json()) asyncio.run(main()) ~~~ ### JavaScript: track ~~~javascript import { x402Client } from "@x402/core/client"; import { ExactEvmScheme } from "@x402/evm/exact/client"; import { wrapFetchWithPayment } from "@x402/fetch"; import { privateKeyToAccount } from "viem/accounts"; const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY); const client = new x402Client(); // Base mainnet. client.register("eip155:8453", new ExactEvmScheme(account)); const paidFetch = wrapFetchWithPayment(fetch, client); const response = await paidFetch( "https://apistead.qd.je/api/v1/spotify/track", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ id: "4cOdK2wGLETKBW3PvgPWqT", }), }, ); console.log(await response.json()); ~~~ ### cURL: track challenge ~~~bash curl -i "https://apistead.qd.je/api/v1/spotify/track?id=4cOdK2wGLETKBW3PvgPWqT" ~~~ ## Agent links - JSON: https://x402.apistead.qd.je/api/apis/spotify-api - Markdown: https://x402.apistead.qd.je/api/apis/spotify-api/md - Routes: https://x402.apistead.qd.je/agent/routes?id=spotify-api - Receipts: https://x402.apistead.qd.je/agent/receipts?id=spotify-api - API reference: https://x402.apistead.qd.je/api - MCP guide: https://x402.apistead.qd.je/mcp-docs - Agent skill: https://x402.apistead.qd.je/skill - OpenAPI: https://x402.apistead.qd.je/openapi.json - MCP: https://apistead.qd.je/mcp - Docs: https://apistead.qd.je/api --- # Spotify API v2 for AI Agents Spotify metadata v2: tracks, albums, artists, playlists, search, full discographies, artist playlists, related artists, discovered-on and featuring playlists, similar albums, podcasts, episodes, audiobooks, chapters, genres and users. No auth, no API key. | Field | Value | | --- | --- | | Provider | APIStead Labs | | Category | Media | | Networks | Base | | Price | $0.03 per call | | Base URL | https://apistead.qd.je/api/v2 | | Verification | verified (23/23 routes) | | Last verified | 2026-11-13T13:53:04.807Z | | Receipt | https://basescan.org/tx/0x3f369c98f7753d3fda50495d941342c1880dd2480d6e80170fa235127b97ef1b | | JSON | https://x402.apistead.qd.je/api/apis/spotify-api-v2 | | Markdown | https://x402.apistead.qd.je/api/apis/spotify-api-v2/md | | MCP | https://apistead.qd.je/mcp | | API reference | https://x402.apistead.qd.je/api | | OpenAPI | https://x402.apistead.qd.je/openapi.json | ## For AI agents Spotify v2 metadata for agents: search the catalogue; fetch complete artist discographies, artist playlists, related artists, similar albums, podcast episodes, audiobook chapters and public user playlists. No Spotify login or API key. ## Scope The v2 release covers public Spotify search, playlists, albums, artists, artist top tracks, related artists, artist playlists, discovered-on playlists, featuring playlists, complete artist discographies, tracks, similar albums, podcasts, podcast episodes, episodes, audiobooks, audiobook chapters, genres and public user profiles. The five v1 routes remain live. It does not access a user library, playback, downloads or account data. Playlist creation dates and per-track added dates are not exposed in public metadata. ## Agent intents - Spotify search API - Spotify API without login - Spotify API without an API key - Spotify API no OAuth - Spotify catalogue search - Spotify music metadata API - Spotify discography API - Spotify artist playlists API - Spotify related artists API - get Spotify related artists - get Spotify artist playlists - get Spotify artist discovered-on playlists - get Spotify artist featuring playlists - get Spotify albums similar to a track - search Spotify podcasts - search Spotify episodes - search Spotify audiobooks - search Spotify users - get a Spotify podcast - get Spotify podcast episodes - get a Spotify episode - get a Spotify audiobook - get Spotify audiobook chapters - get Spotify genres - get a Spotify public user profile - search Spotify tracks - search Spotify albums - search Spotify artists - search Spotify playlists - get Spotify metadata without a token - search Spotify for a track - search Spotify for an album or artist - search Spotify without an API key - get a Spotify artist's complete discography - get a Spotify playlist with full track metadata - get Spotify metadata without a Spotify account - Spotify API v2 for AI agents - Spotify API alternative Spotify v2 is the additive generation of the APIStead Spotify API. The five v1 routes remain live; v2 adds keyword search, complete artist discographies, artist playlist sections, related artists and similar albums. Every v2 route accepts a Spotify URL, URI or 22-character id and returns normalized JSON. Playlists return every ordered track with no song limit. Search returns tracks, albums, artists, playlists, podcasts, episodes, audiobooks, genres and users with per-type counts and totals. Dedicated search routes cover podcasts, episodes, audiobooks and users. Detail routes return podcasts, podcast episodes, episodes, audiobooks, audiobook chapters, genres and public user profiles. Artist routes return playlists, related artists, discovered-on playlists and featuring playlists. Discography returns the artist's release sections and marks `complete: true` when the full discography was read. The API reads public Spotify catalogue metadata. No Spotify account, login, OAuth token or API key is required from the buyer. This is an independent APIStead API and is not affiliated with or endorsed by Spotify. Playlist creation dates and per-track added dates are not exposed in public metadata, so those fields are not returned. Playback control, downloads and user-library access are not included. ## Endpoints ### GET /spotify/search Search Spotify tracks, albums, artists, playlists, podcasts, episodes, audiobooks, genres and users. - URL: https://apistead.qd.je/api/v2/spotify/search - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.788Z - Latency: 3 ms - Uptime (30d): 80.65% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/search?q=daft%20punk&type=all&limit=2 ``` Example response: ```json { "note": "Spotify catalogue search, normalized for agents. Returns public tracks, albums, artists, playlists, podcasts, episodes, audiobooks, genres and users. Playback control, downloads and user-library access are not included.", "type": "all", "limit": 2, "query": "daft punk", "users": [], "albums": [ { "id": "5WulAOx9ilWy1h8UGZ1gkI", "uri": "spotify:album:5WulAOx9ilWy1h8UGZ1gkI", "url": "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI", "name": "Deadbeat", "type": "album", "artists": [ { "id": "5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" } ], "cover_image": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b", "track_count": null, "release_date": "2025-10-17" } ], "counts": { "users": 0, "albums": 1, "genres": 0, "tracks": 1, "artists": 1, "episodes": 0, "podcasts": 0, "playlists": 1, "audiobooks": 0 }, "genres": [], "offset": 0, "source": "spotify", "totals": { "users": 0, "albums": 1, "genres": 0, "tracks": 1, "artists": 1, "episodes": 0, "podcasts": 0, "playlists": 1, "audiobooks": 0 }, "tracks": [ { "id": "4whkhyXTrTgHKZzkUvdwoq", "uri": "spotify:track:4whkhyXTrTgHKZzkUvdwoq", "url": "https://open.spotify.com/track/4whkhyXTrTgHKZzkUvdwoq", "album": { "id": "5WulAOx9ilWy1h8UGZ1gkI", "url": "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI", "name": "Deadbeat", "release_date": "2025-10-17" }, "title": "My Old Ways", "artists": [ { "id": "5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" } ], "artwork": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b", "explicit": true, "playable": true, "position": 1, "duration_ms": 298783, "preview_url": "https://p.scdn.co/mp3-preview/7a7303f1efe59a3ef469aed4ea5fa7a3ef0e677d", "release_date": "2025-10-17", "duration_formatted": "4:59" } ], "artists": [ { "id": "5INjqkS1o8h1imAzPqGZBb", "uri": "spotify:artist:5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala", "image": "https://i.scdn.co/image/ab6761610000e5ebe412a782245eb20d9626c601" } ], "preview": false, "episodes": [], "podcasts": [], "playlists": [ { "id": "37i9dQZF1DXcBWIGoYBM5M", "uri": "spotify:playlist:37i9dQZF1DXcBWIGoYBM5M", "url": "https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M", "name": "Daft Punk Mix", "owner": { "id": "spotify", "url": "https://open.spotify.com/user/spotify", "name": "Spotify", "avatar": null }, "cover_image": "https://i.scdn.co/image/ab67616d0000b2730893a0c33fd4b8497b0ef2f6", "description": "", "track_count": null } ], "audiobooks": [], "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/playlist Spotify playlist metadata and every ordered track. There is no song limit. - URL: https://apistead.qd.je/api/v2/spotify/playlist - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.735Z - Latency: 3 ms - Uptime (30d): 79.03% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/playlist?url=https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M&include_albums=true&album_limit=10 ``` Example response: ```json { "note": "Spotify playlist metadata, normalized for agents. Playback control, downloads and user-library access are not included.", "source": "spotify", "tracks": [ { "id": "4whkhyXTrTgHKZzkUvdwoq", "uri": "spotify:track:4whkhyXTrTgHKZzkUvdwoq", "url": "https://open.spotify.com/track/4whkhyXTrTgHKZzkUvdwoq", "album": { "id": "5WulAOx9ilWy1h8UGZ1gkI", "url": "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI", "name": "Deadbeat", "release_date": "2025-10-17" }, "title": "My Old Ways", "artists": [ { "id": "5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" } ], "artwork": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b", "explicit": true, "playable": true, "position": 1, "duration_ms": 298783, "preview_url": "https://p.scdn.co/mp3-preview/7a7303f1efe59a3ef469aed4ea5fa7a3ef0e677d", "release_date": "2025-10-17", "duration_formatted": "4:59" } ], "preview": false, "summary": { "duration_ms": 298783, "track_count": 1, "unique_albums": 1, "explicit_count": 1, "unique_artists": 1, "returned_tracks": 1, "duration_formatted": "4:59", "average_track_duration_ms": 298783 }, "playlist": { "id": "37i9dQZF1DXcBWIGoYBM5M", "uri": "spotify:playlist:37i9dQZF1DXcBWIGoYBM5M", "url": "https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M", "name": "Today's Top Hits", "owner": { "id": "spotify", "url": "https://open.spotify.com/user/spotify", "name": "Spotify", "avatar": "https://i.scdn.co/image/ab6775700000ee8555c25988a6ac314394d3fbf5" }, "saves": 3500000, "playable": true, "cover_image": "https://i.scdn.co/image/ab67616d0000b2730893a0c33fd4b8497b0ef2f6", "description": "The hottest 50.", "duration_ms": 199000, "track_count": 1, "explicit_count": 0, "duration_formatted": "3:19" }, "retrieved_at": "2026-11-12T00:00:00Z", "album_enrichment": { "limit": 10, "limited": false, "requested": true, "enriched_tracks": 1 } } ``` ### GET /spotify/album Spotify album metadata and full track list. - URL: https://apistead.qd.je/api/v2/spotify/album - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.683Z - Latency: 8 ms - Uptime (30d): 80.65% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/album?url=https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI ``` Example response: ```json { "note": "Spotify album metadata, normalized for agents. Playback control, downloads and user-library access are not included.", "album": { "id": "5WulAOx9ilWy1h8UGZ1gkI", "uri": "spotify:album:5WulAOx9ilWy1h8UGZ1gkI", "url": "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI", "name": "Deadbeat", "type": "album", "artists": [ { "id": "5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" } ], "playable": true, "copyrights": [ "℗ 2025 Columbia Records, a Division of Sony Music Entertainment, under exclusive license from Tame Impala" ], "cover_image": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b", "duration_ms": 2600000, "track_count": 12, "release_date": "2025-10-17", "explicit_count": 1, "duration_formatted": "43:20" }, "source": "spotify", "tracks": [ { "id": "4whkhyXTrTgHKZzkUvdwoq", "uri": "spotify:track:4whkhyXTrTgHKZzkUvdwoq", "url": "https://open.spotify.com/track/4whkhyXTrTgHKZzkUvdwoq", "album": { "id": "5WulAOx9ilWy1h8UGZ1gkI", "url": "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI", "name": "Deadbeat", "release_date": "2025-10-17" }, "title": "My Old Ways", "artists": [ { "id": "5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" } ], "artwork": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b", "explicit": true, "playable": true, "position": 1, "duration_ms": 298783, "preview_url": "https://p.scdn.co/mp3-preview/7a7303f1efe59a3ef469aed4ea5fa7a3ef0e677d", "release_date": "2025-10-17", "duration_formatted": "4:59" } ], "preview": false, "summary": { "duration_ms": 2600000, "track_count": 12, "explicit_count": 1, "unique_artists": 1, "returned_tracks": 12, "duration_formatted": "43:20", "average_track_duration_ms": 216667 }, "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/artist Spotify artist profile and top tracks. - URL: https://apistead.qd.je/api/v2/spotify/artist - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.889Z - Latency: 7 ms - Uptime (30d): 85.07% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/artist?url=https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb ``` Example response: ```json { "note": "Spotify artist metadata, normalized for agents. Bio is included when Spotify publishes it. Playback control, downloads and user-library access are not included.", "artist": { "id": "5INjqkS1o8h1imAzPqGZBb", "bio": "Kevin Parker has emerged as one of the most influential voices of the last decade.", "uri": "spotify:artist:5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala", "image": "https://i.scdn.co/image/ab6761610000e5ebe412a782245eb20d9626c601", "followers": 12382756, "world_rank": 31, "monthly_listeners": 65445089 }, "source": "spotify", "preview": false, "summary": { "top_tracks": 5, "duration_ms": 1200000, "explicit_count": 2, "unique_artists": 1, "duration_formatted": "20:00" }, "top_tracks": [ { "id": "4whkhyXTrTgHKZzkUvdwoq", "uri": "spotify:track:4whkhyXTrTgHKZzkUvdwoq", "url": "https://open.spotify.com/track/4whkhyXTrTgHKZzkUvdwoq", "album": { "id": "5WulAOx9ilWy1h8UGZ1gkI", "url": "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI", "name": "Deadbeat", "release_date": "2025-10-17" }, "title": "My Old Ways", "artists": [ { "id": "5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" } ], "artwork": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b", "explicit": true, "playable": true, "position": 1, "duration_ms": 298783, "preview_url": "https://p.scdn.co/mp3-preview/7a7303f1efe59a3ef469aed4ea5fa7a3ef0e677d", "release_date": "2025-10-17", "duration_formatted": "4:59" } ], "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/artist/top-tracks Spotify artist top tracks with album context. - URL: https://apistead.qd.je/api/v2/spotify/artist/top-tracks - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.833Z - Latency: 5 ms - Uptime (30d): 81.97% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/artist/top-tracks?url=https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb&limit=2 ``` Example response: ```json { "note": "Spotify artist top tracks, normalized for agents. Each track includes album context. Playback control, downloads and user-library access are not included.", "artist": { "id": "5INjqkS1o8h1imAzPqGZBb", "bio": "Kevin Parker has emerged as one of the most influential voices of the last decade.", "uri": "spotify:artist:5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala", "image": "https://i.scdn.co/image/ab6761610000e5ebe412a782245eb20d9626c601", "followers": 12382756, "world_rank": 31, "monthly_listeners": 65445089 }, "source": "spotify", "preview": false, "summary": { "duration_ms": 480000, "explicit_count": 1, "unique_artists": 1, "requested_limit": 2, "returned_tracks": 2, "duration_formatted": "8:00", "available_top_tracks": 5 }, "top_tracks": [ { "id": "4whkhyXTrTgHKZzkUvdwoq", "uri": "spotify:track:4whkhyXTrTgHKZzkUvdwoq", "url": "https://open.spotify.com/track/4whkhyXTrTgHKZzkUvdwoq", "album": { "id": "5WulAOx9ilWy1h8UGZ1gkI", "url": "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI", "name": "Deadbeat", "release_date": "2025-10-17" }, "title": "My Old Ways", "artists": [ { "id": "5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" } ], "artwork": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b", "explicit": true, "playable": true, "position": 1, "duration_ms": 298783, "preview_url": "https://p.scdn.co/mp3-preview/7a7303f1efe59a3ef469aed4ea5fa7a3ef0e677d", "release_date": "2025-10-17", "duration_formatted": "4:59" } ], "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/artist/discography Spotify artist discography with complete release sections. The example response is abbreviated; the live route returns all albums, singles and EPs by default. - URL: https://apistead.qd.je/api/v2/spotify/artist/discography - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.861Z - Latency: 6 ms - Uptime (30d): 82.54% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/artist/discography?url=https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb ``` Example response: ```json { "note": "Spotify discography, normalized for agents. Albums, singles and EPs cover the artist's full discography; Popular releases and Appears On come from the artist overview. Playback control, downloads and user-library access are not included.", "artist": { "id": "5INjqkS1o8h1imAzPqGZBb", "bio": "Kevin Parker has emerged as one of the most influential voices of the last decade.", "uri": "spotify:artist:5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala", "image": "https://i.scdn.co/image/ab6761610000e5ebe412a782245eb20d9626c601", "followers": 12382756, "world_rank": 31, "monthly_listeners": 65445089 }, "source": "spotify", "preview": false, "summary": { "scope": "full_discography", "albums": 1, "complete": true, "appears_on": 1, "total_releases": 6, "singles_and_eps": 1, "appears_on_total": 1, "popular_releases": 1, "appears_on_complete": true }, "sections": { "albums": [ { "id": "5WulAOx9ilWy1h8UGZ1gkI", "uri": "spotify:album:5WulAOx9ilWy1h8UGZ1gkI", "url": "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI", "type": "album", "year": 2025, "title": "Deadbeat", "section": "albums", "position": 1, "cover_image": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b", "release_date": "2025-10-17" } ], "appears_on": [ { "id": "4wtZQMNTC1O79kDxMBsEan", "uri": "spotify:album:4wtZQMNTC1O79kDxMBsEan", "url": "https://open.spotify.com/album/4wtZQMNTC1O79kDxMBsEan", "type": "album", "year": 2023, "title": "Cracker Island", "section": "appears_on", "position": 1, "cover_image": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b", "release_date": "2023-02-24" } ], "singles_and_eps": [ { "id": "1V8Qu6CwkBfYucnCWxynq8", "uri": "spotify:album:1V8Qu6CwkBfYucnCWxynq8", "url": "https://open.spotify.com/album/1V8Qu6CwkBfYucnCWxynq8", "type": "single", "year": 2026, "title": "Flower In A Hurricane", "section": "singles_and_eps", "position": 1, "cover_image": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b", "release_date": "2026-10-15" } ], "popular_releases": [ { "id": "5WulAOx9ilWy1h8UGZ1gkI", "uri": "spotify:album:5WulAOx9ilWy1h8UGZ1gkI", "url": "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI", "type": "album", "year": 2025, "title": "Deadbeat", "section": "popular_releases", "position": 1, "cover_image": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b", "release_date": "2025-10-17" } ] }, "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/track Spotify track metadata. - URL: https://apistead.qd.je/api/v2/spotify/track - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.801Z - Latency: 4 ms - Uptime (30d): 80.65% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/track?url=https://open.spotify.com/track/4whkhyXTrTgHKZzkUvdwoq ``` Example response: ```json { "note": "Spotify track metadata, normalized for agents. Playback control, downloads and user-library access are not included.", "track": { "id": "4whkhyXTrTgHKZzkUvdwoq", "uri": "spotify:track:4whkhyXTrTgHKZzkUvdwoq", "url": "https://open.spotify.com/track/4whkhyXTrTgHKZzkUvdwoq", "album": { "id": "5WulAOx9ilWy1h8UGZ1gkI", "url": "https://open.spotify.com/album/5WulAOx9ilWy1h8UGZ1gkI", "name": "Deadbeat", "release_date": "2025-10-17" }, "title": "My Old Ways", "artists": [ { "id": "5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" } ], "artwork": "https://i.scdn.co/image/ab67616d0000b273208500450dcd0fd294d7bd3b", "explicit": true, "playable": true, "copyrights": [ "℗ 2025 Columbia Records, a Division of Sony Music Entertainment, under exclusive license from Tame Impala" ], "duration_ms": 298783, "preview_url": "https://p.scdn.co/mp3-preview/7a7303f1efe59a3ef469aed4ea5fa7a3ef0e677d", "release_date": "2025-10-17", "duration_formatted": "4:59" }, "source": "spotify", "preview": false, "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/podcast Spotify podcast metadata from a podcast link. - URL: https://apistead.qd.je/api/v2/spotify/podcast - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.728Z - Latency: 3 ms - Uptime (30d): 80% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/podcast?id=79CkJF3UJTHFV8Dse3Oy0P ``` Example response: ```json { "note": "Spotify podcast metadata, normalized for agents. Playback control, downloads and user-library access are not included.", "source": "spotify", "podcast": { "id": "79CkJF3UJTHFV8Dse3Oy0P", "uri": "spotify:show:79CkJF3UJTHFV8Dse3Oy0P", "url": "https://open.spotify.com/show/79CkJF3UJTHFV8Dse3Oy0P", "name": "Huberman Lab", "rating": { "total": 132040, "average": 4.9 }, "topics": [ "Health", "Science" ], "explicit": true, "playable": true, "publisher": "Scicomm Media", "media_type": "MIXED", "cover_image": "https://i.scdn.co/image/ab6765630000ba8a66aed32f8066a72781b3b12a", "description": "The Huberman Lab podcast discusses neuroscience and science-based tools for everyday life.", "total_episodes": 458 }, "preview": false, "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/podcast/episodes Spotify podcast episodes with limit and offset. - URL: https://apistead.qd.je/api/v2/spotify/podcast/episodes - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.814Z - Latency: 3 ms - Uptime (30d): 75% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/podcast/episodes?id=79CkJF3UJTHFV8Dse3Oy0P&limit=2 ``` Example response: ```json { "note": "Spotify podcast episodes, normalized for agents. Playback control, downloads and user-library access are not included.", "limit": 2, "total": 458, "offset": 0, "source": "spotify", "podcast": { "id": "79CkJF3UJTHFV8Dse3Oy0P", "uri": "spotify:show:79CkJF3UJTHFV8Dse3Oy0P", "url": "https://open.spotify.com/show/79CkJF3UJTHFV8Dse3Oy0P", "name": "Huberman Lab", "cover_image": "https://i.scdn.co/image/ab6765630000ba8a66aed32f8066a72781b3b12a" }, "preview": false, "episodes": [ { "id": "2jMJRxwPQPErrwRGo8duQQ", "uri": "spotify:episode:2jMJRxwPQPErrwRGo8duQQ", "url": "https://open.spotify.com/episode/2jMJRxwPQPErrwRGo8duQQ", "title": "Overcome Addictions & Obsessions of All Kinds", "artwork": "https://i.scdn.co/image/ab67656300005f1fa233a74360db2864b66acf79", "podcast": { "id": "79CkJF3UJTHFV8Dse3Oy0P", "url": "https://open.spotify.com/show/79CkJF3UJTHFV8Dse3Oy0P", "name": "Huberman Lab" }, "explicit": false, "playable": true, "description": "A conversation about dopamine, habits and compulsive behaviour.", "duration_ms": 8210602, "media_types": [ "AUDIO", "VIDEO" ], "preview_url": "https://p.scdn.co/mp3-preview/e6e12cd874abb5a8684c059f7e884f47e64e6acd.mp3", "release_date": "2026-11-09", "duration_formatted": "2:16:50" } ], "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/episode Spotify episode metadata from an episode link. - URL: https://apistead.qd.je/api/v2/spotify/episode - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.807Z - Latency: 3 ms - Uptime (30d): 78.57% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/episode?id=2jMJRxwPQPErrwRGo8duQQ ``` Example response: ```json { "note": "Spotify episode metadata, normalized for agents. Playback control, downloads and user-library access are not included.", "source": "spotify", "episode": { "id": "2jMJRxwPQPErrwRGo8duQQ", "uri": "spotify:episode:2jMJRxwPQPErrwRGo8duQQ", "url": "https://open.spotify.com/episode/2jMJRxwPQPErrwRGo8duQQ", "title": "Overcome Addictions & Obsessions of All Kinds", "artwork": "https://i.scdn.co/image/ab67656300005f1fa233a74360db2864b66acf79", "podcast": { "id": "79CkJF3UJTHFV8Dse3Oy0P", "url": "https://open.spotify.com/show/79CkJF3UJTHFV8Dse3Oy0P", "name": "Huberman Lab" }, "explicit": false, "playable": true, "description": "A conversation about dopamine, habits and compulsive behaviour.", "duration_ms": 8210602, "media_types": [ "AUDIO", "VIDEO" ], "preview_url": "https://p.scdn.co/mp3-preview/e6e12cd874abb5a8684c059f7e884f47e64e6acd.mp3", "release_date": "2026-11-09", "duration_formatted": "2:16:50" }, "preview": false, "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/audiobook Spotify audiobook metadata from an audiobook link. - URL: https://apistead.qd.je/api/v2/spotify/audiobook - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.851Z - Latency: 5 ms - Uptime (30d): 80.36% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/audiobook?id=0Db3QPOPFO0SYx0TGG0mim ``` Example response: ```json { "note": "Spotify audiobook metadata, normalized for agents. Audiobook audio, downloads and user-library access are not included.", "source": "spotify", "preview": false, "audiobook": { "id": "0Db3QPOPFO0SYx0TGG0mim", "uri": "spotify:show:0Db3QPOPFO0SYx0TGG0mim", "url": "https://open.spotify.com/show/0Db3QPOPFO0SYx0TGG0mim", "price": { "amount": 32.9, "currency": "USD", "formatted": "$32.90" }, "title": "Protocols: An Operating Manual for the Human Body", "rating": { "total": 188, "average": 4.87 }, "authors": [ "Andrew Huberman" ], "explicit": false, "language": "en", "playable": false, "narrators": [ "Andrew D. Huberman Ph.D." ], "publisher": "Andrew D. Huberman Ph.D.", "cover_image": "https://i.scdn.co/image/ab676663000022a8d702d1894bc0c54c801f5ad5", "description": "A science-based operating manual for the human body.", "duration_ms": 65133789, "release_date": "2026-09-15", "chapters_count": 64, "duration_formatted": "18:05:33" }, "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/audiobook/chapters Spotify audiobook chapters with limit and offset. - URL: https://apistead.qd.je/api/v2/spotify/audiobook/chapters - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.795Z - Latency: 4 ms - Uptime (30d): 78.57% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/audiobook/chapters?id=0Db3QPOPFO0SYx0TGG0mim&limit=2 ``` Example response: ```json { "note": "Spotify audiobook chapters, normalized for agents. Audiobook audio, downloads and user-library access are not included.", "limit": 2, "total": 64, "offset": 0, "source": "spotify", "preview": false, "chapters": [ { "id": "6z4sRbQH1K2drBheUVeytw", "uri": "spotify:episode:6z4sRbQH1K2drBheUVeytw", "url": "https://open.spotify.com/episode/6z4sRbQH1K2drBheUVeytw", "title": "Track 1", "artwork": "https://i.scdn.co/image/ab676663000022a8d702d1894bc0c54c801f5ad5", "explicit": false, "playable": false, "position": 1, "audiobook": { "id": "0Db3QPOPFO0SYx0TGG0mim", "url": "https://open.spotify.com/show/0Db3QPOPFO0SYx0TGG0mim", "title": "Protocols: An Operating Manual for the Human Body" }, "description": "", "duration_ms": 66507, "preview_url": null, "duration_formatted": "1:07" } ], "audiobook": { "id": "0Db3QPOPFO0SYx0TGG0mim", "uri": "spotify:show:0Db3QPOPFO0SYx0TGG0mim", "url": "https://open.spotify.com/show/0Db3QPOPFO0SYx0TGG0mim", "title": "Protocols: An Operating Manual for the Human Body", "cover_image": "https://i.scdn.co/image/ab676663000022a8d702d1894bc0c54c801f5ad5" }, "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/genres Search Spotify genres by keyword. - URL: https://apistead.qd.je/api/v2/spotify/genres - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.586Z - Latency: 4 ms - Uptime (30d): 75% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/genres?q=pop&limit=2 ``` Example response: ```json { "note": "Spotify genres, normalized for agents.", "query": "pop", "total": 37, "genres": [ { "id": "0JQ5DAqbMKFEC4WFtoNRpw", "uri": "spotify:genre:0JQ5DAqbMKFEC4WFtoNRpw", "name": "Pop", "image": "https://t.scdn.co/media/derived/pop-274x274_447148649685019f5e2a03a39e78ba52_0_0_274_274.jpg" } ], "source": "spotify", "preview": false, "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/user Spotify public user profile and public playlists. - URL: https://apistead.qd.je/api/v2/spotify/user - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.825Z - Latency: 7 ms - Uptime (30d): 78.57% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/user?id=spotify ``` Example response: ```json { "note": "Spotify public user profile, normalized for agents. Private account data is not included.", "user": { "id": "spotify", "uri": "spotify:user:spotify", "url": "https://open.spotify.com/user/spotify", "image": "https://i.scdn.co/image/ab6775700000ee8555c25988a6ac314394d3fbf5", "username": "spotify", "display_name": "Spotify", "playlists_count": 1000, "public_playlists": [ { "id": "37i9dQZF1DXcBWIGoYBM5M", "uri": "spotify:playlist:37i9dQZF1DXcBWIGoYBM5M", "url": "https://open.spotify.com/playlist/37i9dQZF1DXcBWIGoYBM5M", "name": "Today's Top Hits", "followers": 33597453, "cover_image": null } ] }, "source": "spotify", "preview": false, "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/search/podcasts Search Spotify podcasts by keyword. - URL: https://apistead.qd.je/api/v2/spotify/search/podcasts - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.774Z - Latency: 4 ms - Uptime (30d): 74.07% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/search/podcasts?q=huberman&limit=1 ``` Example response: ```json { "note": "Spotify podcast search, normalized for agents. Playback control, downloads and user-library access are not included.", "type": "podcast", "limit": 1, "query": "huberman", "total": 209, "offset": 0, "source": "spotify", "preview": false, "podcasts": [ { "id": "79CkJF3UJTHFV8Dse3Oy0P", "uri": "spotify:show:79CkJF3UJTHFV8Dse3Oy0P", "url": "https://open.spotify.com/show/79CkJF3UJTHFV8Dse3Oy0P", "name": "Huberman Lab", "publisher": "Scicomm Media", "media_type": "MIXED", "cover_image": "https://i.scdn.co/image/ab6765630000ba8a66aed32f8066a72781b3b12a" } ], "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/search/episodes Search Spotify podcast episodes by keyword. - URL: https://apistead.qd.je/api/v2/spotify/search/episodes - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.840Z - Latency: 4 ms - Uptime (30d): 77.78% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/search/episodes?q=dopamine&limit=1 ``` Example response: ```json { "note": "Spotify episode search, normalized for agents. Playback control, downloads and user-library access are not included.", "type": "episode", "limit": 1, "query": "dopamine", "total": 3, "offset": 0, "source": "spotify", "preview": false, "episodes": [ { "id": "2jMJRxwPQPErrwRGo8duQQ", "uri": "spotify:episode:2jMJRxwPQPErrwRGo8duQQ", "url": "https://open.spotify.com/episode/2jMJRxwPQPErrwRGo8duQQ", "title": "Overcome Addictions & Obsessions of All Kinds", "artwork": "https://i.scdn.co/image/ab67656300005f1fa233a74360db2864b66acf79", "podcast": { "id": "79CkJF3UJTHFV8Dse3Oy0P", "url": "https://open.spotify.com/show/79CkJF3UJTHFV8Dse3Oy0P", "name": "Huberman Lab" }, "explicit": false, "playable": true, "description": "A conversation about dopamine, habits and compulsive behaviour.", "duration_ms": 8210602, "release_date": "2026-11-09", "duration_formatted": "2:16:50" } ], "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/search/audiobooks Search Spotify audiobooks by keyword. - URL: https://apistead.qd.je/api/v2/spotify/search/audiobooks - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.551Z - Latency: 7 ms - Uptime (30d): 74.07% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/search/audiobooks?q=atomic%20habits&limit=1 ``` Example response: ```json { "note": "Spotify audiobook search, normalized for agents. Audiobook audio, downloads and user-library access are not included.", "type": "audiobook", "limit": 1, "query": "atomic habits", "total": 2, "offset": 0, "source": "spotify", "preview": false, "audiobooks": [ { "id": "40ygvasZaqVMMBkgYoUy8C", "uri": "spotify:show:40ygvasZaqVMMBkgYoUy8C", "url": "https://open.spotify.com/show/40ygvasZaqVMMBkgYoUy8C", "title": "Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones", "authors": [ "James Clear" ], "cover_image": "https://i.scdn.co/image/ab676663000022a843d3293222816f8305c3eaaa", "description": "Author(s): James Clear Narrator(s): James Clear. Tiny changes, remarkable results.", "release_date": "2018-10-16" } ], "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/search/users Search Spotify public user profiles by keyword. - URL: https://apistead.qd.je/api/v2/spotify/search/users - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.716Z - Latency: 3 ms - Uptime (30d): 75.93% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/search/users?q=huberman&limit=1 ``` Example response: ```json { "note": "Spotify public user search, normalized for agents. Private account data is not included.", "type": "user", "limit": 1, "query": "huberman", "total": 195, "users": [ { "id": "31ad2j7c46tsiqvkw2msrjfmgky4", "uri": "spotify:user:31ad2j7c46tsiqvkw2msrjfmgky4", "url": "https://open.spotify.com/user/31ad2j7c46tsiqvkw2msrjfmgky4", "image": "https://i.scdn.co/image/ab6775700000ee851ce7fdc8210fb842b4dd8292", "username": "31ad2j7c46tsiqvkw2msrjfmgky4", "display_name": "Andrew Huberman" } ], "offset": 0, "source": "spotify", "preview": false, "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/artist/playlists Spotify playlists owned by or associated with an artist. - URL: https://apistead.qd.je/api/v2/spotify/artist/playlists - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.755Z - Latency: 4 ms - Uptime (30d): 77.36% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/artist/playlists?url=https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb ``` Example response: ```json { "note": "Spotify playlists owned by or associated with the artist, normalized for agents.", "total": 1, "artist": { "id": "5INjqkS1o8h1imAzPqGZBb", "uri": "spotify:artist:5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" }, "source": "spotify", "preview": false, "complete": true, "returned": 1, "playlists": [ { "id": "4wmXlb759ceIV2O4JRWjSo", "uri": "spotify:playlist:4wmXlb759ceIV2O4JRWjSo", "url": "https://open.spotify.com/playlist/4wmXlb759ceIV2O4JRWjSo", "name": "Tame Impala Complete", "owner": { "url": null, "name": "Tame Impala" }, "followers": null, "cover_image": "https://image-cdn-fa.spotifycdn.com/image/ab67706c0000da84eab552ee34feabfe2e6f36aa", "description": "Listen to \"Loser\" from Tame Impala's album Deadbeat, out now." } ], "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/artist/related Spotify related artists for an artist. - URL: https://apistead.qd.je/api/v2/spotify/artist/related - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.742Z - Latency: 4 ms - Uptime (30d): 75.93% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/artist/related?url=https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb ``` Example response: ```json { "note": "Spotify related artists, normalized for agents.", "total": 40, "artist": { "id": "5INjqkS1o8h1imAzPqGZBb", "uri": "spotify:artist:5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" }, "source": "spotify", "artists": [ { "id": "67hb7towEyKvt5Z8Bx306c", "uri": "spotify:artist:67hb7towEyKvt5Z8Bx306c", "url": "https://open.spotify.com/artist/67hb7towEyKvt5Z8Bx306c", "name": "Empire Of The Sun", "image": "https://i.scdn.co/image/ab6761610000e5ebc806f3e714afa21861e20248" } ], "preview": false, "complete": true, "returned": 40, "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/artist/discovered-on Spotify playlists that surface an artist. - URL: https://apistead.qd.je/api/v2/spotify/artist/discovered-on - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.701Z - Latency: 15 ms - Uptime (30d): 77.78% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/artist/discovered-on?url=https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb ``` Example response: ```json { "note": "Spotify playlists that surface the artist, normalized for agents.", "total": 100, "artist": { "id": "5INjqkS1o8h1imAzPqGZBb", "uri": "spotify:artist:5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" }, "source": "spotify", "preview": false, "complete": false, "returned": 40, "playlists": [ { "id": "4wmXlb759ceIV2O4JRWjSo", "uri": "spotify:playlist:4wmXlb759ceIV2O4JRWjSo", "url": "https://open.spotify.com/playlist/4wmXlb759ceIV2O4JRWjSo", "name": "Tame Impala Complete", "owner": { "url": null, "name": "Tame Impala" }, "followers": null, "cover_image": "https://image-cdn-fa.spotifycdn.com/image/ab67706c0000da84eab552ee34feabfe2e6f36aa", "description": "Listen to \"Loser\" from Tame Impala's album Deadbeat, out now." } ], "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/artist/featuring Spotify playlists featuring an artist. - URL: https://apistead.qd.je/api/v2/spotify/artist/featuring - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.748Z - Latency: 3 ms - Uptime (30d): 75.93% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/artist/featuring?url=https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb ``` Example response: ```json { "note": "Spotify playlists featuring the artist, normalized for agents.", "total": 8, "artist": { "id": "5INjqkS1o8h1imAzPqGZBb", "uri": "spotify:artist:5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" }, "source": "spotify", "preview": false, "complete": true, "returned": 8, "playlists": [ { "id": "4wmXlb759ceIV2O4JRWjSo", "uri": "spotify:playlist:4wmXlb759ceIV2O4JRWjSo", "url": "https://open.spotify.com/playlist/4wmXlb759ceIV2O4JRWjSo", "name": "Tame Impala Complete", "owner": { "url": null, "name": "Tame Impala" }, "followers": null, "cover_image": "https://image-cdn-fa.spotifycdn.com/image/ab67706c0000da84eab552ee34feabfe2e6f36aa", "description": "Listen to \"Loser\" from Tame Impala's album Deadbeat, out now." } ], "retrieved_at": "2026-11-12T00:00:00Z" } ``` ### GET /spotify/track/similar-albums Spotify albums similar to a track. - URL: https://apistead.qd.je/api/v2/spotify/track/similar-albums - Price: $0.03 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.768Z - Latency: 3 ms - Uptime (30d): 77.36% Example request: ```http GET https://apistead.qd.je/api/v2/spotify/track/similar-albums?url=https://open.spotify.com/track/4whkhyXTrTgHKZzkUvdwoq&limit=2 ``` Example response: ```json { "note": "Spotify albums similar to the supplied track, normalized for agents.", "total": 42, "track": { "id": "4whkhyXTrTgHKZzkUvdwoq", "uri": "spotify:track:4whkhyXTrTgHKZzkUvdwoq", "url": "https://open.spotify.com/track/4whkhyXTrTgHKZzkUvdwoq" }, "albums": [ { "id": "31qVWUdRrlb8thMvts0yYL", "uri": "spotify:album:31qVWUdRrlb8thMvts0yYL", "url": "https://open.spotify.com/album/31qVWUdRrlb8thMvts0yYL", "name": "The Slow Rush", "type": "album", "artists": [ { "id": "5INjqkS1o8h1imAzPqGZBb", "url": "https://open.spotify.com/artist/5INjqkS1o8h1imAzPqGZBb", "name": "Tame Impala" } ], "cover_image": "https://i.scdn.co/image/ab67616d0000b27358267bd34420a00d5cf83a49", "track_count": 12, "release_date": "2020-02-14" } ], "source": "spotify", "preview": false, "complete": false, "returned": 2, "retrieved_at": "2026-11-12T00:00:00Z" } ``` ## Payment Every paid route uses x402 over HTTP. Call the route without payment to receive a 402 challenge, then pay the quoted USDC amount and retry. The 402 challenge is the authoritative source for price, asset, network and pay-to address. Reading this record and the discovery API is free. - Protocol: x402 v2 - Asset: USDC - Networks: Base - Price: $0.03 per call ## Verification - State: verified - Routes verified: 23/23 - Last verified: 2026-11-13T13:53:04.807Z - Receipt: https://basescan.org/tx/0x3f369c98f7753d3fda50495d941342c1880dd2480d6e80170fa235127b97ef1b ## FAQ ### What is the difference between Spotify v1 and v2? v1 keeps playlist, album, artist, artist top-tracks and track metadata. v2 adds keyword search, complete artist discographies, artist playlists, related artists, discovered-on playlists, featuring playlists, similar albums and dedicated spoken-audio and user search. v2 returns the same core shapes as v1. ### Does v2 require a Spotify account? No. The provider uses public catalogue metadata. There is no Spotify login, OAuth grant, user library scope or playback scope, and the buyer does not send a Spotify token. ### Is APIStead affiliated with Spotify? No. APIStead is an independent first-party API and is not affiliated with or endorsed by Spotify. It reads public Spotify catalogue metadata without a buyer account. ### Does v2 include playlist creation or per-track added dates? No. Playlist creation dates are not exposed in public playlist metadata. Per-track added dates are not exposed in public metadata. V2 does not return or fabricate either. ### Does v2 include artist genres or popularity? No. The public catalogue source exposes world_rank but does not expose Spotify genre labels or popularity scores. V2 does not fabricate them. ### Does the v2 playlist endpoint limit tracks? No. It pages through the complete playlist and returns every ordered track. album_limit only controls how many tracks receive album enrichment. ### What does v2 search return? Search returns tracks, albums, artists, playlists, podcasts, episodes, audiobooks, genres and users with per-type counts and totals. Dedicated search routes return only podcasts, episodes, audiobooks or users. Detail routes return podcasts, podcast episodes, episodes, audiobooks, audiobook chapters, genres and public user profiles. Artist records include world_rank, and artist routes return playlists, related artists, discovered-on playlists and featuring playlists. ### What artist and recommendation routes does v2 include? V2 includes artist playlists, related artists, discovered-on playlists, featuring playlists and similar albums based on a track. These return normalized JSON for agents. ### Does v2 include track, album or artist radio? No. Radio is created by the playback client and is not exposed as a stable public catalogue query. V2 returns similar albums based on a track and related artists instead. ### Is the v2 discography complete? v2 returns all albums, singles and EPs and marks complete as true when the release feed was fully read. The public Appears On section exposes up to 50 items and reports appears_on_total. ### Does v2 download or play music? No. v2 returns metadata only. It does not download audio, stream audio, control playback or access a user library. ### How much does a v2 call cost? Every v2 route costs $0.03 USDC on Base. The agent reads the x402 402 challenge, pays the provider wallet directly and retries. There is no API key or subscription. ## Code examples ### Python: v2 search ~~~python import asyncio import os from eth_account import Account from x402 import x402Client from x402.http.clients import x402HttpxClient from x402.mechanisms.evm import EthAccountSigner from x402.mechanisms.evm.exact.register import register_exact_evm_client account = Account.from_key(os.environ["EVM_PRIVATE_KEY"]) client = x402Client() register_exact_evm_client(client, EthAccountSigner(account)) async def main(): async with x402HttpxClient(client) as http: response = await http.get( "https://apistead.qd.je/api/v2/spotify/search", params={"q": "daft punk", "type": "track", "limit": 5}, ) response.raise_for_status() print(response.json()) asyncio.run(main()) ~~~ ### JavaScript: v2 search ~~~javascript import { x402Client } from "@x402/core/client"; import { ExactEvmScheme } from "@x402/evm/exact/client"; import { wrapFetchWithPayment } from "@x402/fetch"; import { privateKeyToAccount } from "viem/accounts"; const account = privateKeyToAccount(process.env.EVM_PRIVATE_KEY); const client = new x402Client(); client.register("eip155:8453", new ExactEvmScheme(account)); const paidFetch = wrapFetchWithPayment(fetch, client); const response = await paidFetch( "https://apistead.qd.je/api/v2/spotify/search?q=daft%20punk&type=track&limit=5", ); console.log(await response.json()); ~~~ ### cURL: v2 search challenge ~~~bash curl -i "https://apistead.qd.je/api/v2/spotify/search?q=daft%20punk&type=track&limit=5" ~~~ ### Python: v2 track ~~~python import asyncio import os from eth_account import Account from x402 import x402Client from x402.http.clients import x402HttpxClient from x402.mechanisms.evm import EthAccountSigner from x402.mechanisms.evm.exact.register import register_exact_evm_client account = Account.from_key(os.environ["EVM_PRIVATE_KEY"]) client = x402Client() register_exact_evm_client(client, EthAccountSigner(account)) async def main(): async with x402HttpxClient(client) as http: response = await http.get( "https://apistead.qd.je/api/v2/spotify/track", params={"id": "4cOdK2wGLETKBW3PvgPWqT"}, ) response.raise_for_status() print(response.json()) asyncio.run(main()) ~~~ ## Agent links - JSON: https://x402.apistead.qd.je/api/apis/spotify-api-v2 - Markdown: https://x402.apistead.qd.je/api/apis/spotify-api-v2/md - Routes: https://x402.apistead.qd.je/agent/routes?id=spotify-api-v2 - Receipts: https://x402.apistead.qd.je/agent/receipts?id=spotify-api-v2 - API reference: https://x402.apistead.qd.je/api - MCP guide: https://x402.apistead.qd.je/mcp-docs - Agent skill: https://x402.apistead.qd.je/skill - OpenAPI: https://x402.apistead.qd.je/openapi.json - MCP: https://apistead.qd.je/mcp - Docs: https://apistead.qd.je/api --- # US Building Permits API Permit history for US properties and contractors. | Field | Value | | --- | --- | | Provider | APIStead Labs | | Category | Public Records | | Networks | Base | | Price | $0.01 per call | | Base URL | https://apistead.qd.je/api/v1 | | Verification | verified (1/1 routes) | | Last verified | 2026-11-13T13:52:07.908Z | | Receipt | https://basescan.org/tx/0x87fa207fe48e9a46f86e723adfa2a145d500c6e18274ebb7ff833f22e905211e | | JSON | https://x402.apistead.qd.je/api/apis/us-building-permits-api | | Markdown | https://x402.apistead.qd.je/api/apis/us-building-permits-api/md | | MCP | https://apistead.qd.je/mcp | | API reference | https://x402.apistead.qd.je/api | | OpenAPI | https://x402.apistead.qd.je/openapi.json | ## For AI agents Look up sample US building permit records by city and optional search text. ## Scope Sample cities only. Not a complete national permit feed, legal verification or construction approval. ## Agent intents - look up building permits - check permit activity for an address - find construction permits in a city - research a property permit history Permit data is useful for property due diligence, contractor lead generation, insurance underwriting and solar/roofing qualification. This API normalizes a messy local-government dataset into a consistent permit event. The preview returns a clearly labelled sample for a small set of cities. Production connects to local open-data feeds and normalizes them behind the same shape. Each record includes a source URL and a `retrieved_at` timestamp. ## Endpoints ### GET /permits?city={city}&query={query} Search permit events for a city. - URL: https://apistead.qd.je/api/v1/permits?city={city}&query={query} - Price: $0.01 USDC per call - Pay to: 0x2E9804240E493DD8daeBa4F341a5086b92cde235 - Verified: yes - Last checked: 2026-11-14T03:35:09.578Z - Latency: 4 ms - Uptime (30d): 84.85% Example request: ```http GET https://apistead.qd.je/api/v1/permits?city=austin&query=roof ``` Example response: ```json { "city": "austin", "note": "Preview sample. Production connects to local open-data feeds.", "results": [ { "type": "Residential Roofing", "status": "issued", "address": "1200 Example Ave", "issued_at": "2026-09-14", "permit_number": "2026-123456" } ] } ``` ## Payment Every paid route uses x402 over HTTP. Call the route without payment to receive a 402 challenge, then pay the quoted USDC amount and retry. The 402 challenge is the authoritative source for price, asset, network and pay-to address. Reading this record and the discovery API is free. - Protocol: x402 v2 - Asset: USDC - Networks: Base - Price: $0.01 per call ## Verification - State: verified - Routes verified: 1/1 - Last verified: 2026-11-13T13:52:07.908Z - Receipt: https://basescan.org/tx/0x87fa207fe48e9a46f86e723adfa2a145d500c6e18274ebb7ff833f22e905211e ## Agent links - JSON: https://x402.apistead.qd.je/api/apis/us-building-permits-api - Markdown: https://x402.apistead.qd.je/api/apis/us-building-permits-api/md - Routes: https://x402.apistead.qd.je/agent/routes?id=us-building-permits-api - Receipts: https://x402.apistead.qd.je/agent/receipts?id=us-building-permits-api - API reference: https://x402.apistead.qd.je/api - MCP guide: https://x402.apistead.qd.je/mcp-docs - Agent skill: https://x402.apistead.qd.je/skill - OpenAPI: https://x402.apistead.qd.je/openapi.json - MCP: https://apistead.qd.je/mcp - Docs: https://apistead.qd.je/api