openapi: 3.2.0 info: title: CONNSKILL Growth Services SEO API version: 3.0.0 description: 'Search research for AI agents: Local Market Check packages, domain ranking snapshots and keyword demand data.' termsOfService: https://agent.connskill.com/pricing contact: email: info@connskill.com x-logo: url: https://agent.connskill.com/icon.png altText: CONNSKILL logo: https://agent.connskill.com/icon.png icon: https://agent.connskill.com/icon.png x-guidance: Read the free discovery, input and quote routes first. Paid operations return an x402 challenge carrying the exact amount, asset, network and recipient. Prices can vary with selected tier, inputs or usage; use the actual challenge before approving payment. Support is free and uses a separate wallet ownership signature. Preserve the original request and payment proof for redelivery; never pay again for an unresolved purchase. x-trust: operator: CONNSKILL GmbH & Co. KG jurisdiction: Germany (EU) contact: info@connskill.com auth: No account or API key. Manual first purchases and private redelivery require a free Sign-In-With-X wallet proof from POST /v1/payments/challenge. payment: x402 v2, USDC on Base (eip155:8453), pay-per-call to 0x43B85AE58f0A2505c710Bc715d6f3EB16b1f63dE idempotency: A fresh wallet proof bound to the exact original request and payment references can retrieve its retained private result without another payment. redelivery: Private redelivery only reads a retained result. A missing result or uncertain purchase remains held for wallet support; it never starts another provider order. refund: On-chain settlement is technically final. This does not exclude statutory claims. Invalid input is rejected before settlement; failed delivery must be resolved through the delivery policy and support. unclearState: If a purchase times out and we cannot tell whether the provider charged us, you get HTTP 504 with stateUnclear — so you never blindly re-order. timeouts: No uptime SLA. Every outbound call has a timeout (provider 20s, DataForSEO 45s, purchase 60s); the gateway hard-caps at 90s and returns 504 rather than hanging. rateLimit: Paid service calls have no per-caller rate limit. Wallet challenges have bounded capacity and can return 429. Request size limits apply. We never log your IP; only technical metadata such as User-Agent and Referer. discovery: https://agent.connskill.com/openapi.json · https://agent.connskill.com/.well-known/x402 · https://agent.connskill.com/llms.txt · https://agent.connskill.com/pricing tags: - name: SEO paths: /v1/keyword-metrics: post: operationId: keywordMetrics summary: 'Keyword demand check for up to 1000 chosen terms: search volume, CPC…' tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.150000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - keywords properties: keywords: type: array items: type: string minItems: 1 maxItems: 1000 description: Keywords to look up. A single string is also accepted and treated as a one-element list. location_code: type: integer default: 2276 language_code: type: string default: de example: keywords: - webdesign rosenheim - seo agentur location_code: 2276 language_code: de responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string items: type: array items: type: object properties: keyword: type: string searchVolume: type: integer cpc: type: number competition: type: number monthly: type: array items: type: object properties: year: type: integer month: type: integer searchVolume: type: integer example: status: delivered items: - keyword: webdesign rosenheim searchVolume: 320 cpc: 4.1 competition: 0.62 monthly: - year: 2026 month: 6 searchVolume: 340 '402': description: Payment Required /v1/trust-check: post: operationId: trustCheck summary: 'x402 seller trust check before you pay: probes the live 402, reads USDC inflow…' tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.050000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - origin properties: origin: type: string minLength: 4 description: Bare host of the x402 service to check, e.g. agent.connskill.com example: origin: agent.connskill.com responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string origin: type: string probe: type: object properties: x402_valid: type: boolean x402Version: type: integer network: type: string payTo: type: string http_ms: type: integer chain: type: object properties: inflowUsdc: type: number payers: type: integer payersSelfDealing: type: integer selfDealingShare: type: number windowDays: type: integer verdict: type: string example: status: delivered origin: https://agent.connskill.com probe: x402_valid: true x402Version: 2 network: eip155:8453 payTo: 0x43B8... http_ms: 240 chain: inflowUsdc: 6.87 payers: 3 payersSelfDealing: 1 selfDealingShare: 0.31 windowDays: 14 verdict: green '402': description: Payment Required /v1/exposure-check: post: operationId: exposureCheck summary: 'Leak and infostealer exposure of a domain: employee and user credentials seen…' tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.030000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - domain properties: domain: type: string minLength: 4 description: Domain to check, e.g. example.com (no e-mail addresses, no paths). Also accepted as "target" or "url". example: domain: adobe.com responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string domain: type: string infostealer: type: object properties: employees: type: integer users: type: integer thirdParties: type: integer lastEmployeeCompromised: type: string stealerFamilies: type: array items: type: object properties: family: type: string count: type: integer leaks: type: object properties: found: type: integer sources: type: array items: type: object properties: name: type: string date: {} breaches: type: array items: type: object properties: name: type: string date: type: string accounts: type: integer verdict: type: object properties: level: type: string reasons: type: array items: type: string sourcesFailed: type: array items: {} example: status: delivered domain: adobe.com infostealer: employees: 1561 users: 2365419 thirdParties: 518 lastEmployeeCompromised: '2026-08-22T00:25:20.000Z' stealerFamilies: - family: Lumma count: 900000 leaks: found: 62 sources: - name: Stealer Logs date: null breaches: - name: Adobe date: '2013-10-04' accounts: 152445165 verdict: level: high reasons: - 1561 employee device(s) seen in infostealer logs sourcesFailed: [] '402': description: Payment Required /v1/exposure-check-email: post: operationId: exposureCheckEmail summary: 'Leak and infostealer exposure of one e-mail address: infections that saved it…' tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.050000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - email properties: email: type: string minLength: 6 description: E-mail address you own or are authorised to check example: email: someone@example.com responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string subject: type: string domain: type: string infostealer: type: object properties: compromised: type: boolean infections: type: integer corporateServices: type: integer userServices: type: integer firstCompromised: type: string lastCompromised: type: string leaks: type: object properties: found: type: integer sources: type: array items: type: object properties: name: type: string date: type: string fieldTypes: type: array items: type: string verdict: type: object properties: level: type: string reasons: type: array items: type: string example: status: delivered subject: sha256:9f86d0… domain: example.com infostealer: compromised: true infections: 2 corporateServices: 16 userServices: 1262 firstCompromised: 2026-04-12T… lastCompromised: 2026-05-27T… leaks: found: 7 sources: - name: LinkedIn.com date: 2012-05 fieldTypes: - name - password verdict: level: high reasons: - 2 infostealer infection(s) with this address saved, last 2026-05-27 '402': description: Payment Required /v1/domain-security-check: post: operationId: domainSecurityCheck summary: 'Security posture of a domain in one call: TLS certificate (issuer, expiry…' tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.050000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - domain properties: domain: type: string minLength: 4 description: Bare domain, e.g. example.com. Also accepted as "target" or "url". example: domain: example.com responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string domain: type: string score: type: integer grade: type: string findings: type: array items: type: object properties: severity: type: string code: type: string text: type: string registration: type: object properties: registrar: type: string expires: type: string dnssec: type: boolean dns: type: object properties: mx: type: array items: type: string spfAll: type: string dmarcPolicy: type: string caa: type: array items: {} tls: type: object properties: issuer: type: string daysLeft: type: integer authorized: type: boolean protocol: type: string http: type: object properties: status: type: integer hsts: {} csp: type: boolean exposure: type: object properties: verdict: type: object properties: level: type: string reasons: type: array items: type: string example: status: delivered domain: example.com score: 68 grade: C findings: - severity: medium code: no_https_redirect text: HTTP does not redirect to HTTPS - severity: low code: no_hsts text: No Strict-Transport-Security header registration: registrar: RESERVED-Internet Assigned Numbers Authority expires: '2027-08-13T04:00:00Z' dnssec: true dns: mx: - . spfAll: -all dmarcPolicy: reject caa: [] tls: issuer: SSL Corporation daysLeft: 53 authorized: true protocol: TLSv1.3 http: status: 200 hsts: null csp: false exposure: verdict: level: medium reasons: - 12 leak record(s) mention the domain '402': description: Payment Required /v1/keyword-metrics-multi: post: operationId: keywordMetricsMulti summary: Search volume, CPC and competition for one keyword set across up to 30… tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.150000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - keywords - location_codes properties: keywords: type: array items: type: string minItems: 1 maxItems: 1000 description: Keywords to look up (same set for every location). A single string is also accepted and treated as a one-element list. location_codes: type: array items: type: integer minItems: 1 maxItems: 30 description: DataForSEO location codes, 1-30. Price is 0.15 USDC per location. language_code: type: string default: de example: keywords: - roof replacement - new roof cost location_codes: - 1015254 - 1021048 - 1013462 language_code: en responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string locations: type: array items: type: object properties: location_code: type: integer items: type: array items: type: object properties: keyword: type: string searchVolume: type: integer cpc: type: number competition: type: integer failed: type: array items: {} example: status: delivered locations: - location_code: 1015254 items: - keyword: roof replacement searchVolume: 320 cpc: 4.1 competition: 62 failed: [] '402': description: Payment Required /v1/keyword-ideas: post: operationId: keywordIdeas summary: Keyword suggestions for a seed keyword, with search volume and CPC tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.030000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - keyword properties: keyword: type: string minLength: 1 description: Seed keyword. A one-element list is also accepted; its first entry is used. limit: type: integer default: 50 maximum: 100 location_code: type: integer default: 2276 language_code: type: string default: de example: keyword: electric bikes limit: 50 responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string items: type: array items: type: object properties: keyword: type: string searchVolume: type: integer cpc: type: number competition: type: number example: status: delivered items: - keyword: webdesign agentur searchVolume: 1900 cpc: 5.2 competition: 0.7 '402': description: Payment Required /v1/ranked-keywords: post: operationId: rankedKeywords summary: 'Domain ranking snapshot: observed keywords, positions, ranking URLs and search…' tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.050000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - target properties: target: type: string minLength: 3 description: Domain, e.g. example.com. Also accepted as "domain" or "url". limit: type: integer default: 50 maximum: 100 location_code: type: integer default: 2276 language_code: type: string default: de example: target: example.com limit: 50 responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string items: type: array items: type: object properties: keyword: type: string rank: type: integer url: type: string searchVolume: type: integer example: status: delivered items: - keyword: agentur rosenheim rank: 4 url: https://example.com/ searchVolume: 210 '402': description: Payment Required /v1/backlinks-report: post: operationId: backlinksReport summary: 'Backlink profile of a domain: summary metrics plus top 25 referring domains' tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.150000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - target properties: target: type: string minLength: 3 description: Domain, e.g. example.com. Also accepted as "domain" or "url". example: target: example.com responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string summary: type: object properties: backlinks: type: integer referringDomains: type: integer rank: type: integer topReferringDomains: type: array items: type: object properties: domain: type: string backlinks: type: integer rank: type: integer example: status: delivered summary: backlinks: 1234 referringDomains: 87 rank: 210 topReferringDomains: - domain: blog.example.org backlinks: 40 rank: 350 '402': description: Payment Required /v1/competitors: post: operationId: competitors summary: Organic search competitors of a domain, with keyword overlap metrics tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.050000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - target properties: target: type: string minLength: 3 description: Domain, e.g. example.com. Also accepted as "domain" or "url". limit: type: integer default: 20 maximum: 50 location_code: type: integer default: 2276 language_code: type: string default: de example: target: example.com limit: 20 responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string items: type: array items: type: object properties: domain: type: string intersections: type: integer avgPosition: type: number etv: type: number example: status: delivered items: - domain: konkurrent.de intersections: 42 avgPosition: 12.3 etv: 890.5 '402': description: Payment Required /v1/site-audit: post: operationId: siteAudit summary: 'Complete SEO picture of a domain in one call: traffic estimate, ranked…' tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '1.000000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - target properties: target: type: string minLength: 3 description: Domain, e.g. example.com. Also accepted as "domain" or "url". location_code: type: integer default: 2276 language_code: type: string default: de example: target: example.com responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string target: type: string overview: type: object properties: organicKeywords: type: integer estimatedTrafficValue: type: number backlinks: type: integer referringDomains: type: integer topKeywords: type: array items: type: object properties: keyword: type: string rank: type: integer url: type: string searchVolume: type: integer competitors: type: array items: type: object properties: domain: type: string intersections: type: integer avgPosition: type: number backlinks: type: object properties: total: type: integer referringDomains: type: integer topReferring: type: array items: type: object properties: domain: type: string backlinks: type: integer onpage: type: object properties: progress: type: string score: type: number pagesCrawled: type: integer duplicateTitles: type: integer brokenLinks: type: integer nonIndexable: type: integer ssl: type: object properties: valid: type: boolean expires: type: string issues: type: array items: type: object properties: check: type: string pages: type: integer example: status: delivered target: example.com overview: organicKeywords: 1240 estimatedTrafficValue: 8900.5 backlinks: 3400 referringDomains: 210 topKeywords: - keyword: example service rank: 3 url: https://example.com/ searchVolume: 880 competitors: - domain: rival.com intersections: 320 avgPosition: 8.4 backlinks: total: 3400 referringDomains: 210 topReferring: - domain: press.example.org backlinks: 44 onpage: progress: finished score: 94.4 pagesCrawled: 3 duplicateTitles: 0 brokenLinks: 0 nonIndexable: 0 ssl: valid: true expires: '2026-10-14' issues: - check: title_too_short pages: 3 '402': description: Payment Required /v1/ai-search-volume: post: operationId: aiSearchVolume summary: How often keywords are asked inside AI assistants (ChatGPT, Perplexity & co)… tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.050000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - keywords properties: keywords: type: array items: type: string minItems: 1 maxItems: 1000 description: Keywords to look up. A single string is also accepted and treated as a one-element list. location_code: type: integer default: 2840 description: 2840 = United States, 2276 = Germany language_code: type: string default: en example: keywords: - best crm software - project management tool location_code: 2840 language_code: en responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string items: type: array items: type: object properties: keyword: type: string aiSearchVolume: type: integer monthly: type: array items: type: object properties: year: type: integer month: type: integer aiSearchVolume: type: integer example: status: delivered items: - keyword: best crm software aiSearchVolume: 87 monthly: - year: 2026 month: 7 aiSearchVolume: 87 '402': description: Payment Required /v1/domain-tech: post: operationId: domainTech summary: Full technology stack a domain runs (analytics, frameworks, CMS, servers… tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.050000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - target properties: target: type: string minLength: 3 description: Domain, e.g. example.com. Also accepted as "domain" or "url". example: target: stripe.com responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string domain: type: string domainRank: type: integer groups: type: array items: type: object properties: group: type: string items: type: array items: type: string example: status: delivered domain: stripe.com domainRank: 729 groups: - group: sales items: - Google Analytics - HubSpot '402': description: Payment Required /v1/keyword-difficulty: post: operationId: keywordDifficulty summary: SEO ranking difficulty (0-100) for up to 1000 keywords — how hard it is to rank… tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.050000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - keywords properties: keywords: type: array items: type: string minItems: 1 maxItems: 1000 description: Keywords to score. A single string is also accepted and treated as a one-element list. location_code: type: integer default: 2840 description: 2840 = United States, 2276 = Germany language_code: type: string default: en example: keywords: - seo agency - web design location_code: 2840 language_code: en responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string items: type: array items: type: object properties: keyword: type: string difficulty: type: integer example: status: delivered items: - keyword: seo agency difficulty: 19 '402': description: Payment Required /v1/google-trends: post: operationId: googleTrends summary: Google Trends interest over the last 12 months for up to 5 keywords — weekly… tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.030000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - keywords properties: keywords: type: array items: type: string minItems: 1 maxItems: 5 description: Up to 5 keywords to compare. A single string is also accepted and treated as a one-element list. location_code: type: integer default: 2840 description: 2840 = United States, 2276 = Germany example: keywords: - bitcoin - ethereum location_code: 2840 responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string items: type: array items: type: object properties: keyword: type: string averageInterest: type: integer timeline: type: array items: type: object properties: weekOf: type: string interest: type: integer example: status: delivered items: - keyword: bitcoin averageInterest: 36 timeline: - weekOf: '2026-07-19' interest: 27 '402': description: Payment Required /v1/maps-search: post: operationId: mapsSearch summary: 'Google Maps results for a search: local businesses with rating, address, phone…' tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.030000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - keyword properties: keyword: type: string minLength: 1 description: Search term, e.g. "pizza restaurant". A one-element list is also accepted; its first entry is used. limit: type: integer default: 20 maximum: 100 location_code: type: integer default: 2276 language_code: type: string default: de example: keyword: pizza restaurant location_code: 2276 responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string items: type: array items: type: object properties: rank: type: integer title: type: string category: type: string rating: type: number reviews: type: integer address: type: string phone: type: string url: type: string example: status: delivered items: - rank: 1 title: L’Osteria category: Italian restaurant rating: 4.5 reviews: 2100 address: Musterstr. 1, 80331 München phone: +49 89 123456 url: https://losteria.net '402': description: Payment Required /v1/news-search: post: operationId: newsSearch summary: 'Google News results for a keyword: headlines with source, URL, snippet and…' tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.030000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - keyword properties: keyword: type: string minLength: 1 description: Search term. A one-element list is also accepted; its first entry is used. location_code: type: integer default: 2276 language_code: type: string default: de example: keyword: artificial intelligence location_code: 2840 language_code: en responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string items: type: array items: type: object properties: rank: type: integer title: type: string source: type: string url: type: string snippet: type: string published: type: string example: status: delivered items: - rank: 1 title: AI breakthrough announced source: Reuters url: https://reuters.com/... snippet: … published: '2026-08-25 14:02:11 +00:00' '402': description: Payment Required /v1/image-search: post: operationId: imageSearch summary: 'Google Images results for a keyword: image URL, page URL and alt text' tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.030000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - keyword properties: keyword: type: string minLength: 1 description: Search term. A one-element list is also accepted; its first entry is used. limit: type: integer default: 20 maximum: 100 location_code: type: integer default: 2276 language_code: type: string default: de example: keyword: electric bike location_code: 2840 language_code: en responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string items: type: array items: type: object properties: rank: type: integer title: type: string imageUrl: type: string pageUrl: type: string alt: type: string example: status: delivered items: - rank: 1 title: E-Bike 2026 imageUrl: https://…/bike.jpg pageUrl: https://example.com/e-bikes alt: electric bike '402': description: Payment Required /v1/bing-serp: post: operationId: bingSerp summary: Organic Bing results for a keyword — the second search engine, often different… tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.030000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - keyword properties: keyword: type: string minLength: 1 description: Search term. A one-element list is also accepted; its first entry is used. location_code: type: integer default: 2276 language_code: type: string default: de example: keyword: crm software location_code: 2840 language_code: en responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string items: type: array items: type: object properties: rank: type: integer title: type: string url: type: string description: type: string example: status: delivered items: - rank: 1 title: Best CRM 2026 url: https://example.com/crm description: … '402': description: Payment Required /v1/brand-mentions: post: operationId: brandMentions summary: Web mentions of a brand or keyword with source page and sentiment (Content… tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.080000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - keyword properties: keyword: type: string minLength: 1 description: Brand or keyword to find mentions of. A one-element list is also accepted; its first entry is used. limit: type: integer default: 20 maximum: 50 example: keyword: tesla limit: 20 responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string items: type: array items: type: object properties: url: type: string domain: type: string snippet: type: string sentiment: type: object properties: positive: type: number negative: type: number example: status: delivered items: - url: https://blog.example.com/post domain: blog.example.com snippet: … tesla … sentiment: positive: 0.7 negative: 0.1 '402': description: Payment Required /v1/whois: post: operationId: whois summary: 'Whois record for one domain: registration/expiry dates, registrar, status codes…' tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.400000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - domain properties: domain: type: string minLength: 3 description: Domain, e.g. example.com. Also accepted as "target" or "url". example: domain: apple.com responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string whois: type: object properties: domain: type: string created: type: string expires: type: string registrar: type: string registered: type: boolean example: status: delivered whois: domain: apple.com created: '1987-02-19' expires: '2027-02-20' registrar: CSC Corporate Domains registered: true '402': description: Payment Required /v1/page-audit: post: operationId: pageAudit summary: 'Instant technical audit of ONE page: OnPage score, meta, timings and failed…' tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.030000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - url properties: url: type: string minLength: 10 description: Full page URL incl. https:// enable_javascript: type: boolean default: false description: Render with JavaScript (slower) example: url: https://example.com/ responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string page: type: object properties: url: type: string statusCode: type: integer onpageScore: type: number title: type: string failedChecks: type: array items: type: string loadTimeMs: type: integer example: status: delivered page: url: https://example.com/ statusCode: 200 onpageScore: 89.2 title: Example failedChecks: - no_description loadTimeMs: 312 '402': description: Payment Required /v1/keyword-gap: post: operationId: keywordGap summary: Keywords two domains BOTH rank for, with each position — the competitive overlap tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.050000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - target1 - target2 properties: target1: type: string minLength: 3 description: First domain target2: type: string minLength: 3 description: Second domain limit: type: integer default: 20 maximum: 100 location_code: type: integer default: 2276 language_code: type: string default: de example: target1: apple.com target2: samsung.com limit: 20 responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string items: type: array items: type: object properties: keyword: type: string searchVolume: type: integer rank1: type: integer rank2: type: integer example: status: delivered items: - keyword: smartphone searchVolume: 550000 rank1: 3 rank2: 1 '402': description: Payment Required /v1/traffic-estimate: post: operationId: trafficEstimate summary: Estimated organic and paid Google traffic for up to 10 domains in one call tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.050000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - targets properties: targets: type: array items: type: string minItems: 1 maxItems: 10 description: Domains to estimate location_code: type: integer default: 2276 language_code: type: string default: de example: targets: - apple.com - samsung.com responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string items: type: array items: type: object properties: target: type: string organicTraffic: type: integer organicKeywords: type: integer paidTraffic: type: integer example: status: delivered items: - target: apple.com organicTraffic: 10500000 organicKeywords: 412000 paidTraffic: 12000 '402': description: Payment Required /v1/domain-rank: post: operationId: domainRank summary: 'Organic visibility overview of a domain: keyword counts by position bucket plus…' tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.050000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - target properties: target: type: string minLength: 3 description: Domain, e.g. example.com. Also accepted as "domain" or "url". location_code: type: integer default: 2276 language_code: type: string default: de example: target: apple.com responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string overview: type: object properties: target: type: string organicKeywords: type: integer organicTraffic: type: integer top3: type: integer top10: type: integer example: status: delivered overview: target: apple.com organicKeywords: 412000 organicTraffic: 10500000 top3: 8200 top10: 31000 '402': description: Payment Required /v1/keywords-for-site: post: operationId: keywordsForSite summary: Keywords a website SHOULD target, derived from its content (Google Ads data) tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.050000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - target properties: target: type: string minLength: 3 description: Domain, e.g. example.com. Also accepted as "domain" or "url". limit: type: integer default: 20 maximum: 100 location_code: type: integer default: 2276 language_code: type: string default: de example: target: apple.com limit: 20 responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string items: type: array items: type: object properties: keyword: type: string searchVolume: type: integer cpc: type: number competition: type: number example: status: delivered items: - keyword: iphone 17 pro searchVolume: 823000 cpc: 1.9 competition: 0.8 '402': description: Payment Required /v1/local-businesses: post: operationId: localBusinesses summary: 'Business listings around a coordinate: name, category, address, phone, website…' tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.050000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object required: - location_coordinate properties: query: type: string description: Business name/title contains … (optional) categories: type: array items: type: string description: Category slugs, e.g. ["pizza_restaurant"] (optional) location_coordinate: type: string description: '"lat,lon,radiusKm", e.g. "48.137154,11.576124,10"' limit: type: integer default: 10 maximum: 50 example: query: pizza location_coordinate: 48.137154,11.576124,10 limit: 10 responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string items: type: array items: type: object properties: title: type: string category: type: string address: type: string phone: type: string url: type: string rating: type: number reviews: type: integer example: status: delivered items: - title: Pizzeria Roma category: Pizza restaurant address: Musterweg 5, 80331 München phone: +49 89 654321 url: https://pizzeria-roma.de rating: 4.6 reviews: 320 '402': description: Payment Required /v1/llm-share-of-voice: post: operationId: llmShareOfVoice summary: Which vendors language models actually name when an agent asks for a tool… tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.100000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object properties: category: type: string enum: - keywords - serp - audit - backlinks - sms - x402 - compliance description: Question category, e.g. keywords, serp, backlinks, sms, x402, audit, compliance. Omit for all. days: type: integer default: 7 minimum: 1 maximum: 90 description: Window in days, ending today example: category: keywords days: 7 responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string catalog: type: integer category: type: string window: type: object properties: from: type: string until: type: string days: type: integer sample: type: object properties: answers: type: integer failed: type: integer models: type: integer questions: type: integer daysWithData: type: integer brands: type: array items: type: object properties: brand: type: string share: type: number answers: type: integer avgRank: type: number example: status: delivered catalog: 2 category: keywords window: from: '2026-08-30' until: '2026-09-05' days: 7 sample: answers: 126 failed: 0 models: 6 questions: 2 daysWithData: 7 brands: - brand: ahrefs share: 0.484 answers: 61 avgRank: 1.21 - brand: semrush share: 0.448 answers: 56 avgRank: 1.92 '402': description: Payment Required /v1/local-market-check: post: operationId: localMarketCheck summary: 'Local Market Check package: compare organic Google results and Maps listings…' tags: - SEO x-payment-info: price: mode: fixed currency: USD amount: '0.100000' protocols: - x402: {} requestBody: required: true content: application/json: schema: type: object anyOf: - required: - keyword - required: - category properties: keyword: type: string minLength: 1 description: Search term or local category. Provide keyword or category. A one-element list is also accepted; its first entry is used. category: type: string minLength: 1 description: Alias for keyword. location_code: type: integer default: 2276 description: Numeric DataForSEO location code. location: description: Numeric alias for location_code. language_code: type: string default: de description: de or en. language: type: string description: Alias for language_code. domain: type: string description: Optional own domain for presence checks; not sent to the provider. Also accepted as "target" or "url". example: keyword: webdesign rosenheim location_code: 2276 language_code: de responses: '200': description: Report delivered content: application/json: schema: type: object properties: status: type: string keyword: type: string location_code: type: integer language_code: type: string domain: {} serpTop: type: array items: type: object properties: rank: type: integer title: type: string url: type: string description: type: string localPack: type: array items: {} maps: type: array items: {} competitors: type: array items: {} presence: {} tips: type: array items: type: object properties: priority: type: integer text: type: string totalResults: type: integer example: status: delivered keyword: webdesign rosenheim location_code: 2276 language_code: de domain: null serpTop: - rank: 1 title: Example url: https://example.com/ description: '...' localPack: [] maps: [] competitors: [] presence: null tips: - priority: 1 text: Review your business profile against the visible local results. totalResults: 41200 '402': description: Payment Required components: securitySchemes: signInWithX: type: apiKey in: header name: Sign-In-With-X description: Base64 JSON containing the exact challenge fields, checksummed address, chainId eip155:8453, type eip191 and EIP-191 signature. Free authentication, not payment. One use, five minutes, bound to method, path and JSON body. x-discovery: ownershipProofs: - '0x4b92ee6ef3357beddfb6b0d39fbe8be660a934bde8a226539a16a0ea414768394cdc20d14f025c6bf5a630e99eafe177a742d81b4c16d2933cd1c2f85e708cbb1b' support: title: Wallet support url: /v1/support/policy authentication: sign-in-with-x network: eip155:8453 paid: false description: Free, private support for settled purchases. A short-lived wallet signature proves ownership; never pay again merely to open a case. endpoints: - url: /v1/support/policy method: GET - url: /v1/support/challenge method: POST - url: /v1/support/tickets method: GET - url: /v1/support/tickets method: POST - url: /v1/support/tickets/{ticketId} method: GET - url: /v1/support/tickets/{ticketId}/checkout method: POST - url: /v1/support/tickets/{ticketId}/discount method: POST serviceSearch: endpoint: /v1/service-search method: GET requiresPayment: false querySentToSources: false exhaustiveMarket: false sources: - connskill-directory - cdp-bazaar description: Free local search of bounded cached catalogues. Source coverage, age and failures are explicit; unknown units are not price-ranked. x-support: title: Wallet support url: /v1/support/policy authentication: sign-in-with-x network: eip155:8453 paid: false description: Free, private support for settled purchases. A short-lived wallet signature proves ownership; never pay again merely to open a case. endpoints: - url: /v1/support/policy method: GET - url: /v1/support/challenge method: POST - url: /v1/support/tickets method: GET - url: /v1/support/tickets method: POST - url: /v1/support/tickets/{ticketId} method: GET - url: /v1/support/tickets/{ticketId}/checkout method: POST - url: /v1/support/tickets/{ticketId}/discount method: POST