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-catalog-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 form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
contact:
email: support@getanyapi.com
description: 'Any API, one wallet, USD, no subscriptions. Each API is a single discovered operation: send the normalized input, get a normalized result. Prices and payment outcomes are reported in USD; each operation documents the settlement policy for its enabled payment rails.'
title: Any Catalog API
version: 1.0.0
x-guidance: 'Use each operation''s published method and path with its normalized JSON input (see the operation requestBody). Before setting a client or tool timeout, GET /v1/apis/{sku} and inspect its trailing-30-day latency p50/p95/p99 and sample; p99 is an observation, not a maximum. To pay: send your AnyAPI key (Authorization: Bearer, billed from your USD wallet). For operations that advertise an inline rail, pay per call inline with x402 - call with no key, receive HTTP 402 with a PAYMENT-REQUIRED header, then retry with the PAYMENT-SIGNATURE header (base, no account needed); or pay per call inline with MPP (Machine Payments Protocol) - call with no key, receive HTTP 402 with a WWW-Authenticate: Payment challenge, then retry with the Authorization: Payment header (tempo, no account needed). x402 settles after execution; execution failure is reported as released; mpp settles before execution; execution failure is reported as charged_undelivered.'
servers:
- url: https://api.getanyapi.com
security:
- bearerAuth: []
- apiKeyAuth: []
tags:
- name: Catalog
paths:
/catalog:
get:
description: 'Every API AnyAPI can serve right now, with its normalized input and output contract''s location, its USD pricing, and the sources behind it. Reading the catalog is free and needs no key. Each entry''s `method` and `path` are the gateway''s own authority on how to call it: use them rather than rebuilding a route from the slug. Schemas are omitted here to keep the response small; GET /v1/apis/{sku} returns them for one API.'
operationId: browseCatalog
parameters:
- description: Restrict the response to one category, using an entry's `category`.
in: query
name: category
required: false
schema:
type: string
responses:
'200':
content:
application/json:
schema:
properties:
apis:
items:
$ref: '#/components/schemas/CatalogAPI'
type: array
required:
- apis
type: object
description: The customer-safe catalog.
security: []
summary: Browse the API catalog
tags:
- Catalog
/catalog/search:
get:
description: 'Find an API by what you need rather than by its slug. Results are ranked, and `ranking` names the ranker that served them. A request must name `q`, `category`, or `platform`: a scope on its own is a complete question ("everything this platform can do"), while a request naming none of the three has nothing to answer and is rejected. Searching is free and needs no key. Feed a result''s `slug` to GET /v1/apis/{sku} for its input schema before your first run.'
operationId: searchCatalog
parameters:
- description: What you need, in your own words. Long queries are truncated before ranking.
in: query
name: q
required: false
schema:
type: string
- description: Restrict the response to one category, using an entry's `category`.
in: query
name: category
required: false
schema:
type: string
- description: Restrict results to one platform, using a result's `platformId`.
in: query
name: platform
required: false
schema:
type: string
- description: Maximum results in this response. Omit it for the ranked default. A value above the server's maximum is reduced to it rather than rejected, and `total` still reports how many matched.
in: query
name: limit
required: false
schema:
minimum: 1
type: integer
responses:
'200':
content:
application/json:
schema:
properties:
ranking:
description: Which ranker served this response.
enum:
- keyword
- semantic
type: string
results:
items:
$ref: '#/components/schemas/CatalogSearchResult'
type: array
total:
description: Matches found before `limit` was applied.
type: integer
required:
- results
- total
- ranking
type: object
description: Ranked matches.
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: The request named neither a query nor a scope.
security: []
summary: Search the API catalog
tags:
- Catalog
components:
schemas:
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
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
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
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
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
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
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
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
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
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
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
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