AnyAPI Gateway API

Unified REST gateway to 363 normalized scraping and data APIs, published as an OpenAPI 3.1.0 document with 370 operations. Execute jobs via POST /v1/run/{sku}, browse and search the catalog without a key, fetch a SKU's normalized input/output JSON Schema with its USD pricing and measured 30-day latency, check wallet balance, and poll or re-read results. Every mutating operation accepts an Idempotency-Key. Also fronts a hosted MCP server, llms.txt, and published agent skills.

Operations 370

Showing the first 250 of 370. The full set is in the contract, and via get_provider_operations.

GET /catalog Browse the API catalog #
GET /catalog/search Search the API catalog #
GET /v1/apis List the APIs you can run #
GET /v1/apis/{sku} Get one API #
GET /v1/balance Get your wallet balance #
GET /v1/requests/{id} Get a request #
GET /v1/results/{id} Re-read a cached result for free #
POST /v1/run/ahrefs.keyword_ideas Ahrefs Keyword Ideas #
POST /v1/run/ahrefs.keywords Ahrefs Keyword Difficulty #
POST /v1/run/ahrefs.overview Ahrefs Domain Overview #
POST /v1/run/amazon.asins Amazon Products by ASIN #
POST /v1/run/amazon.bestsellers Amazon Bestsellers #
POST /v1/run/amazon.product Amazon Product #
POST /v1/run/amazon.reviews Amazon Reviews #
POST /v1/run/apollo.organization Apollo Organization #
POST /v1/run/apollo.organization_enrich Apollo Organization Enrichment #
POST /v1/run/apollo.organization_jobs Apollo Organization Jobs #
POST /v1/run/apollo.organization_news Apollo Organization News #
POST /v1/run/apollo.organizations_bulk_enrich Apollo Bulk Organization Enrichment #
POST /v1/run/apollo.person_enrich Apollo Person Enrichment #
POST /v1/run/appstore.reviews App Store Reviews #
POST /v1/run/bluesky.post Bluesky Post #
POST /v1/run/bluesky.profile Bluesky Profile #
POST /v1/run/bluesky.user_posts Bluesky User Posts #
POST /v1/run/capterra.reviews Capterra Reviews #
POST /v1/run/coinmarketcap.listings CoinMarketCap Listings #
POST /v1/run/company.research Company Research #
POST /v1/run/company_enrichment.crustdata_v3 Company Enrichment - Crustdata v3 #
POST /v1/run/company_enrichment.lusha Company Enrichment - Lusha #
POST /v1/run/company_enrichment.peopledatalabs Company Enrichment - People Data Labs #
POST /v1/run/company_enrichment.prospeo Company Enrichment - Prospeo #
POST /v1/run/company_search.ai_ark Company Search - AI Ark #
POST /v1/run/company_search.crustdata_v3 Company Search - Crustdata v3 #
POST /v1/run/company_search.fullenrich Company Search - FullEnrich #
POST /v1/run/company_search.peopledatalabs Company Search - People Data Labs #
POST /v1/run/company_search.prospeo Company Search - Prospeo #
POST /v1/run/company_search.quickenrich Company Search - QuickEnrich #
POST /v1/run/company_search.theirstack Company Search - TheirStack #
POST /v1/run/congress.trades Congress Stock Trades #
POST /v1/run/dexscreener.tokens DEX Screener Tokens #
POST /v1/run/douyin.profile Douyin Profile #
POST /v1/run/douyin.search_videos Douyin Video Search #
POST /v1/run/douyin.user_posts Douyin User Posts #
POST /v1/run/douyin.video Douyin Video #
POST /v1/run/douyin.video_comments Douyin Video Comments #
POST /v1/run/ebay.product eBay Product #
POST /v1/run/ebay.product_full eBay Product Full #
POST /v1/run/ebay.sold_listings eBay Sold Listings #
POST /v1/run/email.find Email Finder #
POST /v1/run/email.verify Email Verifier #
POST /v1/run/email_finding.dropleads Email Finding - DropLeads #
POST /v1/run/email_finding.hunter_count Email Finding - Hunter Email Count #
POST /v1/run/email_finding.hunter_domain Email Finding - Hunter Domain Search #
POST /v1/run/email_finding.icypeas Email Finding - Icypeas #
POST /v1/run/email_finding.quickenrich Email Finding - QuickEnrich #
POST /v1/run/email_finding.zerobounce Email Finding - ZeroBounce #
POST /v1/run/email_finding.zerobounce_domain Email Pattern - ZeroBounce #
POST /v1/run/email_verification.allegrow Email Verification - Allegrow #
POST /v1/run/email_verification.bounceban Email Verification - BounceBan #
POST /v1/run/email_verification.icypeas Email Verification - Icypeas #
POST /v1/run/email_verification.zerobounce Email Verification - ZeroBounce #
POST /v1/run/email_verification.zerobounce_activity Email Activity - ZeroBounce #
POST /v1/run/facebook.ad_details Facebook Ad Details #
POST /v1/run/facebook.ad_details_full Facebook Ad Creative Details #
POST /v1/run/facebook.ad_transcript Facebook Ad Transcript #
POST /v1/run/facebook.comment_replies Facebook Comment Replies #
POST /v1/run/facebook.company_ads Facebook Company Ads #
POST /v1/run/facebook.event_details Facebook Event Details #
POST /v1/run/facebook.events Facebook Events #
POST /v1/run/facebook.followers Facebook Followers #
POST /v1/run/facebook.group_posts Facebook Group Posts #
POST /v1/run/facebook.marketplace Facebook Marketplace #
POST /v1/run/facebook.marketplace_item Facebook Marketplace Item #
POST /v1/run/facebook.page_contact Facebook Page Contact Info #
POST /v1/run/facebook.photos Facebook Page Photos #
POST /v1/run/facebook.post Facebook Post #
POST /v1/run/facebook.post_comments Facebook Post Comments #
POST /v1/run/facebook.post_transcript Facebook Post Transcript #
POST /v1/run/facebook.profile Facebook Profile #
POST /v1/run/facebook.profile_events Facebook Page Events #
POST /v1/run/facebook.profile_posts Facebook Profile Posts #
POST /v1/run/facebook.profile_reels Facebook Profile Reels #
POST /v1/run/facebook.search_companies Facebook Company Search #
POST /v1/run/facebook.search_pages Facebook Page Search #
POST /v1/run/facebook.search_posts Facebook Post Search #
POST /v1/run/g2.reviews G2 Reviews #
POST /v1/run/github.repository GitHub Repository #
POST /v1/run/github.user GitHub User #
POST /v1/run/github.user_activity GitHub User Activity #
POST /v1/run/github.user_contributions GitHub User Contributions #
POST /v1/run/github.user_followers GitHub User Followers #
POST /v1/run/github.user_following GitHub User Following #
POST /v1/run/github.user_pull_requests GitHub User Pull Requests #
POST /v1/run/github.user_repositories GitHub User Repositories #
POST /v1/run/glassdoor.jobs Glassdoor Jobs #
POST /v1/run/google.ai_mode Google AI Mode #
POST /v1/run/google.ai_overview Google AI Overview #
POST /v1/run/google.autocomplete Google Autocomplete #
POST /v1/run/google.images Google Images #
POST /v1/run/google.lens Google Lens #
POST /v1/run/google.news Google News #
POST /v1/run/google.patents Google Patents #
POST /v1/run/google.scholar Google Scholar #
POST /v1/run/google.search_100 Google Search Top 100 #
POST /v1/run/google.videos Google Videos #
POST /v1/run/google_ads.ad_details Google Ads Ad Details #
POST /v1/run/google_ads.company_ads Google Ads Company Ads #
POST /v1/run/google_finance.quote Google Finance Quote #
POST /v1/run/hackernews.profile Hacker News Profile #
POST /v1/run/hackernews.story Hacker News Story #
POST /v1/run/hackernews.story_comments Hacker News Story Comments #
POST /v1/run/indeed.jobs Indeed Jobs #
POST /v1/run/instagram.audio_reels Instagram Reels by Audio #
POST /v1/run/instagram.basic_profile Instagram Basic Profile #
POST /v1/run/instagram.comment_replies Instagram Comment Replies #
POST /v1/run/instagram.embed Instagram Profile Embed #
POST /v1/run/instagram.followers Instagram Followers #
POST /v1/run/instagram.following Instagram Following #
POST /v1/run/instagram.hashtag_analytics Instagram Hashtag Analytics #
POST /v1/run/instagram.hashtag_recent_posts Instagram Hashtag Recent Posts #
POST /v1/run/instagram.hashtag_top_posts Instagram Hashtag Top Posts #
POST /v1/run/instagram.highlight_detail Instagram Highlight Detail #
POST /v1/run/instagram.media_transcript Instagram Media Transcript #
POST /v1/run/instagram.post Instagram Post #
POST /v1/run/instagram.post_comments Instagram Post Comments #
POST /v1/run/instagram.profile Instagram Profile #
POST /v1/run/instagram.profile_contact Instagram Profile Contact Info #
POST /v1/run/instagram.reel_transcript Instagram Reel Transcript #
POST /v1/run/instagram.search_hashtag Instagram Hashtag Search #
POST /v1/run/instagram.search_profiles Instagram Profile Search #
POST /v1/run/instagram.stories_full Instagram Stories (full) #
POST /v1/run/instagram.stories_thin Instagram Stories (basic) #
POST /v1/run/instagram.tagged_posts Instagram Tagged Posts #
POST /v1/run/instagram.user_highlights Instagram User Highlights #
POST /v1/run/instagram.user_posts Instagram User Posts #
POST /v1/run/instagram.user_reels Instagram User Reels #
POST /v1/run/job_search.theirstack Job Search - TheirStack #
POST /v1/run/linkedin.ad LinkedIn Ad Details #
POST /v1/run/linkedin.ads LinkedIn Ads Library #
POST /v1/run/linkedin.article LinkedIn Article #
POST /v1/run/linkedin.company LinkedIn Company #
POST /v1/run/linkedin.company_employees LinkedIn Company Employees #
POST /v1/run/linkedin.company_posts LinkedIn Company Posts #
POST /v1/run/linkedin.company_posts_thin LinkedIn Company Posts (basic) #
POST /v1/run/linkedin.company_thin LinkedIn Company (basic) #
POST /v1/run/linkedin.email LinkedIn Email Finder #
POST /v1/run/linkedin.jobs LinkedIn Jobs #
POST /v1/run/linkedin.jobs_thin LinkedIn Jobs (index) #
POST /v1/run/linkedin.post LinkedIn Post #
POST /v1/run/linkedin.post_comments LinkedIn Post Comments #
POST /v1/run/linkedin.post_reactions LinkedIn Post Reactions #
POST /v1/run/linkedin.post_transcript LinkedIn Post Transcript #
POST /v1/run/linkedin.profile LinkedIn Profile #
POST /v1/run/linkedin.profile_posts_full LinkedIn Profile Posts (full) #
POST /v1/run/linkedin.profile_posts_thin LinkedIn Profile Posts (basic) #
POST /v1/run/linkedin.profile_thin LinkedIn Profile (basic) #
POST /v1/run/linkedin.search_companies LinkedIn Company Search #
POST /v1/run/linkedin.search_posts LinkedIn Post Search #
POST /v1/run/linkedin.search_posts_full LinkedIn Post Search (full) #
POST /v1/run/linkedin.search_profiles LinkedIn Profile Search #
POST /v1/run/linkedin.search_profiles_email LinkedIn Profile Search + Email #
POST /v1/run/linkedin.search_profiles_thin LinkedIn Profile Search (basic) #
POST /v1/run/maps.contacts Google Maps Contacts #
POST /v1/run/maps.place Google Maps Place Lookup #
POST /v1/run/maps.reviews Google Maps Reviews #
POST /v1/run/mobile_phone.ai_ark Mobile Phone - AI Ark #
POST /v1/run/mobile_phone.leadmagic Mobile Phone - LeadMagic #
POST /v1/run/pandaexpress.locations Panda Express Locations #
POST /v1/run/pandaexpress.menu Panda Express Menu #
POST /v1/run/pandaexpress.nutrition Panda Express Nutrition #
POST /v1/run/people_search.ai_ark People Search - AI Ark #
POST /v1/run/people_search.crustdata_v3 People Search - Crustdata v3 #
POST /v1/run/people_search.fullenrich People Search - FullEnrich #
POST /v1/run/people_search.lusha People Search - Lusha #
POST /v1/run/people_search.peopledatalabs People Search - People Data Labs #
POST /v1/run/people_search.prospeo People Search - Prospeo #
POST /v1/run/people_search.quickenrich People Search - QuickEnrich #
POST /v1/run/people_search.quickenrich_company People Search - QuickEnrich Company Contacts #
POST /v1/run/person.skip_trace Skip Trace #
POST /v1/run/person_enrichment.aviato Person Enrichment - Aviato #
POST /v1/run/person_enrichment.bettercontact Person Enrichment - BetterContact #
POST /v1/run/person_enrichment.fullenrich_bulk Bulk Person Enrichment - FullEnrich #
POST /v1/run/person_enrichment.fullenrich_reverse_email Reverse Email Lookup - FullEnrich #
POST /v1/run/person_enrichment.lusha Person Enrichment - Lusha #
POST /v1/run/person_enrichment.peopledatalabs Person Enrichment - People Data Labs #
POST /v1/run/person_enrichment.prospeo Person Enrichment - Prospeo #
POST /v1/run/person_enrichment.quickenrich Person Enrichment - QuickEnrich #
POST /v1/run/playstore.reviews Google Play Reviews #
POST /v1/run/polymarket.markets Polymarket Markets #
POST /v1/run/reddit.post Reddit Post #
POST /v1/run/reddit.post_comments Reddit Post Comments #
POST /v1/run/reddit.post_transcript Reddit Post Transcript #
POST /v1/run/reddit.profile Reddit Profile #
POST /v1/run/reddit.subreddit_details Reddit Subreddit Details #
POST /v1/run/reddit.subreddit_posts Reddit Subreddit Posts #
POST /v1/run/reddit.user_comments Reddit User Comments #
POST /v1/run/reddit.user_posts Reddit User Posts #
POST /v1/run/rednote.note RedNote (Xiaohongshu) Note #
POST /v1/run/rednote.note_comments RedNote (Xiaohongshu) Note Comments #
POST /v1/run/rednote.profile RedNote (Xiaohongshu) Profile #
POST /v1/run/rednote.search_users RedNote (Xiaohongshu) User Search #
POST /v1/run/rednote.user_notes RedNote (Xiaohongshu) User Notes #
POST /v1/run/sec.filings SEC EDGAR Filings #
POST /v1/run/semrush.keywords Semrush Keyword Research #
POST /v1/run/semrush.overview Semrush Domain Overview #
POST /v1/run/seo.competitors_domain SEO Competitor Domains #
POST /v1/run/seo.domain_intersection SEO Domain Intersection #
POST /v1/run/seo.domain_rank_overview SEO Domain Rank Overview #
POST /v1/run/seo.domain_technologies SEO Domain Technologies #
POST /v1/run/seo.domains_by_technology SEO Domains By Technology #
POST /v1/run/seo.keyword_difficulty SEO Keyword Difficulty #
POST /v1/run/seo.keyword_ideas SEO Keyword Ideas #
POST /v1/run/seo.keyword_overview SEO Keyword Overview #
POST /v1/run/seo.keyword_suggestions SEO Keyword Suggestions #
POST /v1/run/seo.local_pack SEO Local Pack #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/anyapi-gateway-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

anyapi-gateway-openapi.json Raw ↑
{"components":{"schemas":{"APIDetail":{"properties":{"beta":{"description":"Present when this API is published as beta. A maturity label only: a beta API routes, serves and bills exactly like any other.","type":"boolean"},"category":{"description":"The API's category, accepted back as the `category` scope.","type":"string"},"description":{"description":"One-line summary of what this API returns.","type":"string"},"excludesCallerDelay":{"description":"Present when this API accepts a caller-requested wait. The published latency is net of that wait, so a caller who uses it measures a longer time.","type":"boolean"},"execution":{"allOf":[{"$ref":"#/components/schemas/DiscoveryExecution"}],"description":"The runtime protocol a run of this API follows."},"failover":{"description":"True when more than one source can serve this API, so a failed attempt is retried on another. Derived from the published sources, never authored.","type":"boolean"},"heavy":{"description":"True when a typical response is large enough to strain an agent's context window. Reach for the run response-budget controls (fields, max_items, summary, jq) before the first call.","type":"boolean"},"howItWorks":{"description":"Authored prose explaining how this API produces its result. Absent when unauthored.","type":"string"},"id":{"description":"Stable identifier for this API.","type":"string"},"inputSchema":{"description":"This API's normalized input as a JSON Schema document. It is strict: build the run body from it, because an invented field name fails the call.","type":"object"},"lanes":{"description":"The sources that can serve this API, cheapest customer charge first. Each carries its own price and its own public identity.","items":{"$ref":"#/components/schemas/APISourceOffer"},"type":"array"},"latency":{"anyOf":[{"$ref":"#/components/schemas/DiscoveryLatency"},{"type":"null"}],"description":"Trailing-window distribution of successful runs, or null when there are too few observations to publish."},"method":{"description":"HTTP method for this API's concrete operation. Gateway authority: use it rather than assuming one.","type":"string"},"name":{"description":"Display name.","type":"string"},"outputSchema":{"description":"This API's normalized output as a JSON Schema document.","type":"object"},"path":{"description":"Concrete gateway path for this API. Gateway authority: use it rather than rebuilding a route from the slug.","type":"string"},"pricing":{"allOf":[{"$ref":"#/components/schemas/DiscoveryPricing"}],"description":"Static USD pricing for this API."},"provider":{"const":"AnyAPI","description":"Always \"AnyAPI\". AnyAPI is the provider of record for every API in the catalog.","type":"string"},"slug":{"description":"The API's slug. Use it as {sku} on GET /v1/apis/{sku} and POST /v1/run/{sku}.","type":"string"},"tryEligible":{"description":"True when this API can be run from the free public try surface.","type":"boolean"},"tryMaxItems":{"description":"The most items the free try returns. Present only when tryEligible is true, so a limit is never advertised for an API the public tool will refuse.","type":"integer"}},"required":["id","slug","category","name","description","method","path","provider","execution","pricing","lanes","tryEligible","failover","latency"],"type":"object"},"APISourceOffer":{"properties":{"pricing":{"allOf":[{"$ref":"#/components/schemas/DiscoveryOffer"}],"description":"This source's own customer price."},"source":{"allOf":[{"$ref":"#/components/schemas/DiscoverySource"}],"description":"This source's public identity."}},"required":["pricing","source"],"type":"object"},"APISummary":{"properties":{"beta":{"description":"Present when this API is published as beta. A maturity label only: a beta API routes, serves and bills exactly like any other.","type":"boolean"},"category":{"description":"The API's category, accepted back as the `category` scope.","type":"string"},"description":{"description":"One-line summary of what this API returns.","type":"string"},"excludesCallerDelay":{"description":"Present when this API accepts a caller-requested wait. The published latency is net of that wait, so a caller who uses it measures a longer time.","type":"boolean"},"execution":{"allOf":[{"$ref":"#/components/schemas/DiscoveryExecution"}],"description":"The runtime protocol a run of this API follows."},"failover":{"description":"True when more than one source can serve this API, so a failed attempt is retried on another. Derived from the published sources, never authored.","type":"boolean"},"heavy":{"description":"True when a typical response is large enough to strain an agent's context window. Reach for the run response-budget controls (fields, max_items, summary, jq) before the first call.","type":"boolean"},"id":{"description":"Stable identifier for this API.","type":"string"},"lanes":{"description":"The sources that can serve this API, cheapest customer charge first. Each carries its own price and its own public identity.","items":{"$ref":"#/components/schemas/APISourceOffer"},"type":"array"},"method":{"description":"HTTP method for this API's concrete operation. Gateway authority: use it rather than assuming one.","type":"string"},"name":{"description":"Display name.","type":"string"},"path":{"description":"Concrete gateway path for this API. Gateway authority: use it rather than rebuilding a route from the slug.","type":"string"},"pricing":{"allOf":[{"$ref":"#/components/schemas/DiscoveryPricing"}],"description":"Static USD pricing for this API."},"provider":{"const":"AnyAPI","description":"Always \"AnyAPI\". AnyAPI is the provider of record for every API in the catalog.","type":"string"},"slug":{"description":"The API's slug. Use it as {sku} on GET /v1/apis/{sku} and POST /v1/run/{sku}.","type":"string"},"tryEligible":{"description":"True when this API can be run from the free public try surface.","type":"boolean"},"tryMaxItems":{"description":"The most items the free try returns. Present only when tryEligible is true, so a limit is never advertised for an API the public tool will refuse.","type":"integer"}},"required":["id","slug","category","name","description","method","path","provider","execution","pricing","lanes","tryEligible","failover"],"type":"object"},"AgentUpgrade":{"properties":{"authorizationServer":{"format":"uri","type":"string"},"clientId":{"type":"string"},"device":{"$ref":"#/components/schemas/DeviceUpgrade"},"scope":{"type":"string"}},"required":["authorizationServer","scope"],"type":"object"},"CatalogAPI":{"properties":{"beta":{"description":"Present when this API is published as beta. A maturity label only: a beta API routes, serves and bills exactly like any other.","type":"boolean"},"category":{"description":"The API's category, accepted back as the `category` scope.","type":"string"},"description":{"description":"One-line summary of what this API returns.","type":"string"},"excludesCallerDelay":{"description":"Present when this API accepts a caller-requested wait. The published latency is net of that wait, so a caller who uses it measures a longer time.","type":"boolean"},"execution":{"allOf":[{"$ref":"#/components/schemas/DiscoveryExecution"}],"description":"The runtime protocol a run of this API follows."},"failover":{"description":"True when more than one source can serve this API, so a failed attempt is retried on another. Derived from the published sources, never authored.","type":"boolean"},"heavy":{"description":"True when a typical response is large enough to strain an agent's context window. Reach for the run response-budget controls (fields, max_items, summary, jq) before the first call.","type":"boolean"},"id":{"description":"Stable identifier for this API.","type":"string"},"lanes":{"description":"The sources that can serve this API, cheapest customer charge first. Each carries its own price and its own public identity.","items":{"$ref":"#/components/schemas/CatalogSourceOffer"},"type":"array"},"method":{"description":"HTTP method for this API's concrete operation. Gateway authority: use it rather than assuming one.","type":"string"},"name":{"description":"Display name.","type":"string"},"path":{"description":"Concrete gateway path for this API. Gateway authority: use it rather than rebuilding a route from the slug.","type":"string"},"pricing":{"allOf":[{"$ref":"#/components/schemas/DiscoveryPricing"}],"description":"Static USD pricing for this API."},"provider":{"const":"AnyAPI","description":"Always \"AnyAPI\". AnyAPI is the provider of record for every API in the catalog.","type":"string"},"slug":{"description":"The API's slug. Use it as {sku} on GET /v1/apis/{sku} and POST /v1/run/{sku}.","type":"string"},"tryEligible":{"description":"True when this API can be run from the free public try surface.","type":"boolean"},"tryMaxItems":{"description":"The most items the free try returns. Present only when tryEligible is true, so a limit is never advertised for an API the public tool will refuse.","type":"integer"}},"required":["id","slug","category","name","description","method","path","provider","execution","pricing","lanes","tryEligible","failover"],"type":"object"},"CatalogSearchResult":{"properties":{"category":{"description":"The API's category, accepted back as the `category` scope.","type":"string"},"description":{"description":"One-line summary of what this API returns.","type":"string"},"excludesCallerDelay":{"description":"Present when this API accepts a caller-requested wait that the published latency excludes.","type":"boolean"},"execution":{"allOf":[{"$ref":"#/components/schemas/DiscoveryExecution"}],"description":"The runtime protocol a run of this API follows."},"failover":{"description":"True when more than one source can serve this API.","type":"boolean"},"highlightFields":{"description":"Output fields of this API that matched the query, with each field's own schema description as `why`. Computed for the top few results only, so an absent array means no highlights were produced rather than no matching field.","items":{"$ref":"#/components/schemas/DiscoveryHighlightField"},"type":"array"},"method":{"description":"HTTP method for this API's concrete operation.","type":"string"},"name":{"description":"Display name.","type":"string"},"path":{"description":"Concrete gateway path for this API.","type":"string"},"platformId":{"description":"The API's platform, accepted back as the `platform` scope.","type":"string"},"pricing":{"allOf":[{"$ref":"#/components/schemas/DiscoveryPricing"}],"description":"Static USD pricing for this API."},"provider":{"const":"AnyAPI","description":"Always \"AnyAPI\".","type":"string"},"relevance":{"description":"How well this API matched, relative to the others in this response.","type":"number"},"slug":{"description":"The API's slug. Feed it to GET /v1/apis/{sku} for the input schema.","type":"string"},"tryMaxItems":{"description":"The most items the free try returns, when this API is try-eligible.","type":"integer"}},"required":["slug","category","name","description","method","path","provider","execution","pricing","failover","platformId","relevance"],"type":"object"},"CatalogSourceOffer":{"properties":{"health":{"allOf":[{"$ref":"#/components/schemas/DiscoverySourceHealth"}],"description":"Measured health for this source. Absent when it has too little traffic to publish."},"pricing":{"allOf":[{"$ref":"#/components/schemas/DiscoveryOffer"}],"description":"This source's own customer price."},"source":{"allOf":[{"$ref":"#/components/schemas/DiscoverySource"}],"description":"This source's public identity."}},"required":["pricing","source"],"type":"object"},"DeviceUpgrade":{"properties":{"deviceCode":{"type":"string"},"expiresIn":{"minimum":0,"type":"integer"},"grantType":{"type":"string"},"interval":{"minimum":1,"type":"integer"},"tokenEndpoint":{"format":"uri","type":"string"},"userCode":{"type":"string"},"verificationUri":{"format":"uri","type":"string"},"verificationUriComplete":{"format":"uri","type":"string"}},"required":["verificationUriComplete","verificationUri","userCode","deviceCode","tokenEndpoint","grantType","interval","expiresIn"],"type":"object"},"DiscoveryExecution":{"properties":{"mode":{"description":"sync answers on the run request; durable accepts the run as a Request you poll at GET /v1/requests/{id}.","enum":["sync","durable"],"type":"string"}},"required":["mode"],"type":"object"},"DiscoveryHighlightField":{"properties":{"path":{"description":"JSON path of the output field inside this API's outputSchema.","type":"string"},"type":{"description":"JSON type of that field.","type":"string"},"why":{"description":"The field's own schema description. Absent when the schema gives none.","type":"string"}},"required":["path","type"],"type":"object"},"DiscoveryLatency":{"properties":{"basis":{"const":"service_time_excludes_caller_requested_delay","description":"Machine-readable definition of what these percentiles measure.","type":"string"},"p50Ms":{"description":"Median successful end-to-end service time, in milliseconds.","type":"integer"},"p95Ms":{"description":"95th percentile successful end-to-end service time, in milliseconds.","type":"integer"},"p99Ms":{"description":"99th percentile successful end-to-end service time, in milliseconds. An observation, not a maximum.","type":"integer"},"sample":{"description":"Successful executions behind these percentiles.","type":"integer"},"window":{"const":"30d","description":"The trailing window these percentiles cover.","type":"string"}},"required":["window","p50Ms","p95Ms","p99Ms","sample","basis"],"type":"object"},"DiscoveryOffer":{"properties":{"baseUsd":{"description":"Linear offers only: USD charged for the call before per-unit billing.","type":"number"},"maxPer1kUsd":{"description":"The same maximum in the per-1,000-request denomination AnyAPI quotes customers in. It is published rather than left to the client, so display this figure instead of scaling a price yourself.","type":"number"},"maxUsd":{"description":"The most one request on this offer can be billed, in USD.","type":"number"},"model":{"description":"Pricing model. A flat offer is one price per request; a linear offer also carries baseUsd and perUnitUsd.","enum":["flat","linear"],"type":"string"},"perUnitUsd":{"description":"Linear offers only: USD charged for each billable unit inside the call.","type":"number"},"unit":{"description":"The billable unit. A flat offer always publishes \"request\".","type":"string"}},"required":["model","unit","maxUsd","maxPer1kUsd"],"type":"object"},"DiscoveryPricing":{"properties":{"failoverMaxPer1kUsd":{"description":"failoverMaxUsd in the per-1,000-request denomination.","type":"number"},"failoverMaxUsd":{"description":"The greatest customer-price maximum across those same sources, in USD.","type":"number"},"from":{"allOf":[{"$ref":"#/components/schemas/DiscoveryOffer"}],"description":"The complete offer for the first source that will be tried, where sources are ordered by the customer charge, cheapest first."}},"required":["from","failoverMaxUsd","failoverMaxPer1kUsd"],"type":"object"},"DiscoverySource":{"properties":{"artworkKey":{"description":"Key for this source's artwork.","type":"string"},"id":{"description":"Stable identifier for this source.","type":"string"},"kind":{"description":"anonymous is a stable identity for an unattributed source; brand names the dataset that supplies the data.","enum":["anonymous","brand"],"type":"string"},"name":{"description":"Display name for this source.","type":"string"}},"required":["id","name","kind","artworkKey"],"type":"object"},"DiscoverySourceHealth":{"properties":{"latencyP50Ms":{"description":"Median successful service time for this source, in milliseconds.","type":"integer"},"latencySample":{"description":"Requests behind latencyP50Ms.","type":"integer"},"requests":{"description":"Requests routed to this source in the window.","type":"integer"},"servedRequests":{"description":"Requests this source served in the window.","type":"integer"},"uptimePct":{"description":"Share of requests this source served successfully, as a percentage.","type":"number"},"uptimeSample":{"description":"Requests behind uptimePct.","type":"integer"},"window":{"const":"30d","description":"The trailing window these measurements cover.","type":"string"}},"required":["window","uptimePct","latencyP50Ms","uptimeSample","latencySample","requests","servedRequests"],"type":"object"},"Error":{"properties":{"code":{"description":"Stable machine-readable error code when the endpoint defines one.","type":"string"},"error":{"description":"Customer-safe error message.","type":"string"},"payment":{"$ref":"#/components/schemas/Payment"},"requestId":{"description":"This run's AnyAPI request id, the same value as the X-Anyapi-Request-Id response header. Quote it to support. Absent on endpoints that do not execute a run.","format":"uuid","type":"string"}},"required":["error"],"type":"object"},"Payment":{"properties":{"costUsd":{"description":"Known USD payment amount for this request.","minimum":0,"type":"number"},"rail":{"minLength":1,"type":"string"},"settlementState":{"enum":["charged_undelivered","indeterminate"],"type":"string"}},"required":["rail","settlementState","costUsd"],"type":"object"},"PaymentRequiredError":{"allOf":[{"$ref":"#/components/schemas/Error"},{"properties":{"error":{"not":{"const":"trial_cap_reached"}}},"type":"object"}]},"RequestSnapshot":{"properties":{"completedAt":{"format":"date-time","type":"string"},"createdAt":{"format":"date-time","type":"string"},"error":{"properties":{"code":{"type":"string"}},"required":["code"],"type":"object"},"expiresAt":{"format":"date-time","type":"string"},"requestId":{"format":"uuid","type":"string"},"result":{"properties":{"costUsd":{"description":"USD charged on the ORIGINAL run, echoed for envelope parity; this re-read is free.","type":"number"},"items":{"description":"Number of result rows returned by the original run.","type":"integer"},"jqError":{"description":"Present only when a `jq` expression failed; `output` then carries the full unshaped result and this explains why the reshape did not apply.","type":"string"},"output":{"description":"The normalized result (`{found, data}` by default), re-shaped by any fields/max_items/summary/jq params. Open shape - a jq expression may replace it with an array or scalar."},"provider":{"description":"Always \"AnyAPI\".","type":"string"},"replayed":{"description":"False on this cached-result endpoint; true is reserved for durable idempotency replays from POST /v1/run/{sku}.","type":"boolean"},"resultId":{"description":"The id you requested, echoed so you can keep re-reading the same cached result.","type":"string"}},"required":["output","provider","costUsd","items","replayed"],"type":"object"},"resultExpired":{"type":"boolean"},"retryAfterSeconds":{"minimum":1,"type":"integer"},"serviceOutcome":{"description":"End-to-end AnyAPI service result when known; independent of payment settlement.","enum":["served","valid_negative","caller_error","service_failure","rejected"],"type":"string"},"settlementState":{"description":"Payment settlement state when known; independent of request lifecycle status.","enum":["not_required","pending","settled","reconcile","charged_undelivered","writeoff"],"type":"string"},"sku":{"type":"string"},"status":{"enum":["queued","running","succeeded","failed","expired"],"type":"string"}},"required":["requestId","sku","status","createdAt"],"type":"object"},"TrialCapReached":{"properties":{"error":{"const":"trial_cap_reached","type":"string"},"message":{"description":"Human-relayable continuation instructions, including an executable token poll.","type":"string"},"upgrade":{"$ref":"#/components/schemas/AgentUpgrade"}},"required":["error","message","upgrade"],"type":"object"},"company_research_claim":{"description":"The value, provenance, and evidence envelope every research field is wrapped in.","properties":{"evidence":{"description":"Sources that ground the value. Empty when nothing the run read grounds it.","items":{"$ref":"#/components/schemas/company_research_claimEvidence"},"type":"array"},"provenance":{"$ref":"#/components/schemas/company_research_provenance"},"value":true},"required":["value","provenance","evidence"],"type":"object"},"company_research_claimEvidence":{"description":"One public source that grounds a claim.","properties":{"capturedAt":{"description":"RFC 3339 UTC time at which the part that produced this claim ran.","format":"date-time","type":"string"},"excerpt":{"description":"Bounded excerpt of the source text.","type":"string"},"kind":{"$ref":"#/components/schemas/company_research_evidenceKind"},"url":{"description":"Canonical URL of the source.","format":"uri","type":"string"}},"required":["url","excerpt","capturedAt"],"type":"object"},"company_research_community":{"description":"One public place where matching company discussion appeared.","properties":{"name":{"description":"Community name.","type":"string"},"platform":{"description":"Platform hosting the community.","type":"string"},"whyRelevant":{"description":"The discussion that put this community in the result.","type":"string"}},"required":["platform","name","whyRelevant"],"type":"object"},"company_research_communityListClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"properties":{"value":{"items":{"$ref":"#/components/schemas/company_research_community"},"type":"array"}}},"company_research_companyBasics":{"description":"Plain crawl-derived identity values, taken from the pages themselves rather than synthesized.","properties":{"canonicalName":{"description":"Company name derived from the homepage title, or from the domain when no title was read.","type":"string"},"domain":{"description":"Domain the run researched.","type":"string"},"links":{"$ref":"#/components/schemas/company_research_companyLinks"},"socials":{"description":"Social account URLs linked from the crawled pages.","items":{"format":"uri","type":"string"},"type":"array"},"websiteTitle":{"description":"Homepage title exactly as served.","type":"string"}},"required":["domain","canonicalName","websiteTitle","socials","links"],"type":"object"},"company_research_companyLinks":{"description":"Customer-useful first-party pages found in the crawl. A field is an empty string when the crawl linked no such page.","properties":{"blog":{"description":"Blog URL.","type":"string"},"careers":{"description":"Careers or jobs page URL.","type":"string"},"contact":{"description":"Contact page URL.","type":"string"},"docs":{"description":"Documentation URL.","type":"string"},"pricing":{"description":"Pricing or plans page URL.","type":"string"}},"required":["careers","pricing","blog","docs","contact"],"type":"object"},"company_research_competitorListClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"properties":{"value":{"items":{"$ref":"#/components/schemas/company_research_competitorProfile"},"type":"array"}}},"company_research_competitorProfile":{"description":"One admitted competitor.","properties":{"domain":{"description":"Competitor domain.","type":"string"},"evidence":{"description":"Pages that ground this competitor. Empty when the run admitted it without reading its own page.","items":{"$ref":"#/components/schemas/company_research_claimEvidence"},"type":"array"},"name":{"description":"Competitor name, or its domain when no page title was read.","type":"string"},"positioning":{"description":"Why the run classified it that way.","type":"string"},"relationship":{"description":"How the run classified this company against the researched one.","enum":["competitor","adjacent","not_competitor","unknown"],"type":"string"}},"required":["name","domain","relationship","positioning","evidence"],"type":"object"},"company_research_crawlCorpus":{"description":"The reusable homepage and interior-page reads the crawl-derived parts share.","properties":{"homepage":{"description":"The company homepage, or null when the run could not read it.","oneOf":[{"type":"null"},{"$ref":"#/components/schemas/company_research_crawlPage"}]},"interiorPages":{"description":"Interior pages the run paid to read.","items":{"$ref":"#/components/schemas/company_research_crawlPage"},"type":"array"}},"required":["homepage","interiorPages"],"type":"object"},"company_research_crawlPage":{"description":"One clipped first-party page read, retained so dependent parts do not re-buy it.","properties":{"description":{"description":"Page meta description.","type":"string"},"links":{"$ref":"#/components/schemas/company_research_pageLinks"},"markdown":{"description":"Clipped page text in markdown.","type":"string"},"title":{"description":"Page title.","type":"string"},"url":{"description":"Page URL as read.","format":"uri","type":"string"}},"required":["url","title","description","markdown","links"],"type":"object"},"company_research_evidenceKind":{"description":"Source class of the evidence row: the company homepage, an interior page of its site, a search result, a competitor's own page, or a catalog provider record.","enum":["homepage","site","search","competitor","provider"],"type":"string"},"company_research_fundingClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"properties":{"value":{"$ref":"#/components/schemas/company_research_fundingSummary"}}},"company_research_fundingSummary":{"description":"Normalized public funding record. An all-zero record means no provider disclosed funding.","properties":{"latestFundingUtc":{"description":"UTC epoch timestamp in seconds (Unix time). Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"latestStage":{"description":"Latest disclosed funding stage.","type":"string"},"rounds":{"description":"Number of disclosed funding rounds.","type":"integer"},"totalUsd":{"description":"Total disclosed funding in USD.","type":"number"}},"required":["totalUsd","latestStage","latestFundingUtc","rounds"],"type":"object"},"company_research_icpListClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"properties":{"value":{"items":{"$ref":"#/components/schemas/company_research_icpProfile"},"type":"array"}}},"company_research_icpProfile":{"description":"One buyer segment synthesized from the crawl.","properties":{"buyingTrigger":{"description":"What makes that segment start looking.","type":"string"},"companyType":{"description":"The kind of company that role works at.","type":"string"},"pains":{"description":"Pains that segment feels.","items":{"type":"string"},"type":"array"},"persona":{"description":"The buying role.","type":"string"}},"required":["persona","companyType","pains","buyingTrigger"],"type":"object"},"company_research_integerClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"description":"A claim whose value is a whole number. 0 means no provider supplied one.","properties":{"value":{"type":"integer"}}},"company_research_keyPerson":{"description":"One leadership record, masked for customer output.","properties":{"firstName":{"description":"First name.","type":"string"},"lastNameInitial":{"description":"Upper-case initial of the last name.","type":"string"},"title":{"description":"Job title.","type":"string"}},"required":["title","firstName","lastNameInitial"],"type":"object"},"company_research_keyPersonListClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"properties":{"value":{"items":{"$ref":"#/components/schemas/company_research_keyPerson"},"type":"array"}}},"company_research_newsArticle":{"description":"One recent company story.","properties":{"matchConfidence":{"description":"1 when the article's domain or organization ids join to the researched company, 0 when nothing joined.","maximum":1,"minimum":0,"type":"number"},"publishedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) at which the article was published. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"storyId":{"description":"Stable identity used to deduplicate the story.","type":"string"},"title":{"description":"Article title.","type":"string"},"type":{"description":"Story class derived from the provider's event categories.","enum":["editorial","press_release","regulatory_filing"],"type":"string"},"url":{"description":"Article URL.","format":"uri","type":"string"}},"required":["url","title","publishedUtc","type","matchConfidence","storyId"],"type":"object"},"company_research_newsArticleListClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"properties":{"value":{"items":{"$ref":"#/components/schemas/company_research_newsArticle"},"type":"array"}}},"company_research_openRole":{"description":"One current company job posting.","properties":{"location":{"description":"City, state, and country joined with commas.","type":"string"},"postedUtc":{"description":"UTC epoch timestamp in seconds (Unix time) at which the role was posted. Multiply by 1000 for a JS Date in milliseconds.","type":"number"},"title":{"description":"Role title.","type":"string"},"url":{"description":"Posting URL.","format":"uri","type":"string"}},"required":["title","location","url","postedUtc"],"type":"object"},"company_research_openRoleListClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"properties":{"value":{"items":{"$ref":"#/components/schemas/company_research_openRole"},"type":"array"}}},"company_research_pageLinks":{"description":"One page's outbound links, classified before the markdown was clipped.","properties":{"site":{"$ref":"#/components/schemas/company_research_companyLinks"},"socials":{"description":"Social accounts linked from this page.","items":{"$ref":"#/components/schemas/company_research_socialHandle"},"type":"array"}},"required":["socials","site"],"type":"object"},"company_research_platformPresence":{"description":"Everything the company runs on one platform. There is exactly one primary because the field is not a list, and secondary holds any number.","properties":{"platform":{"description":"Platform name.","type":"string"},"primary":{"$ref":"#/components/schemas/company_research_socialAccount"},"secondary":{"description":"Further accounts the company runs on the same platform, such as regional ones.","items":{"$ref":"#/components/schemas/company_research_socialAccount"},"type":"array"}},"required":["platform","primary","secondary"],"type":"object"},"company_research_platformPresenceListClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"properties":{"value":{"items":{"$ref":"#/components/schemas/company_research_platformPresence"},"type":"array"}}},"company_research_provenance":{"description":"verified means the run read a page cited by this claim. inferred means no page the run read grounds it.","enum":["verified","inferred"],"type":"string"},"company_research_socialAccount":{"description":"One published company account. The audience fields come from a paid read of the account itself and are absent when the run did not buy one, so a missing follower count is not zero.","properties":{"displayName":{"description":"Account display name.","type":"string"},"followers":{"description":"Follower count at the time of the read.","type":"integer"},"handle":{"description":"Account handle.","type":"string"},"url":{"description":"Account URL.","format":"uri","type":"string"},"verified":{"description":"Whether the platform marks the account verified.","type":"boolean"}},"required":["handle","url"],"type":"object"},"company_research_socialHandle":{"description":"One account as a link scan sees it. It carries no audience, because a link on a page proves an account exists and says nothing about how big it is.","properties":{"handle":{"description":"Account handle on that platform.","type":"string"},"platform":{"description":"Platform the account belongs to.","type":"string"},"url":{"description":"Account URL.","format":"uri","type":"string"}},"required":["platform","handle","url"],"type":"object"},"company_research_stringClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"description":"A claim whose value is text. An empty string means the run found no supported answer.","properties":{"value":{"type":"string"}}},"company_research_stringListClaim":{"allOf":[{"$ref":"#/components/schemas/company_research_claim"}],"description":"A claim whose value is a list of strings.","properties":{"value":{"items":{"type":"string"},"type":"array"}}}},"securitySchemes":{"apiKeyAuth":{"description":"Your AnyAPI key.","in":"header","name":"X-API-Key","type":"apiKey","x-default":"YOUR_ANYAPI_KEY"},"bearerAuth":{"description":"Your AnyAPI key as a Bearer token.","scheme":"bearer","type":"http","x-default":"YOUR_ANYAPI_KEY"}}},"info":{"contact":{"email":"support@getanyapi.com"},"descriptio

# --- truncated at 32 KB (5175 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/anyapi/refs/heads/main/openapi/anyapi-gateway-openapi.json