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-apis-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 APIS 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: APIs
paths:
/v1/apis:
get:
description: The same catalog as GET /catalog, without measured source health, for a caller that is choosing an API to run rather than displaying uptime. Schemas are omitted; GET /v1/apis/{sku} returns them for one API.
operationId: listApis
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/APISummary'
type: array
required:
- apis
type: object
description: The APIs available to your key.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Missing or invalid API key.
summary: List the APIs you can run
tags:
- APIs
/v1/apis/{sku}:
get:
description: 'One API''s full contract: its normalized `inputSchema` and `outputSchema`, its USD pricing, the sources behind it, and its trailing-30-day latency distribution. Build your input from `inputSchema` rather than from the description: the schema is strict, so an invented field name fails the call. The latency percentiles are observations of past successful runs, not execution ceilings.'
operationId: getApi
parameters:
- description: The API's slug, as published by discovery (for example `reddit.search`).
in: path
name: sku
required: true
schema:
type: string
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/APIDetail'
description: The API's full contract.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Missing or invalid API key.
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
description: Unknown slug, or an API no source can serve.
summary: Get one API
tags:
- APIs
components:
schemas:
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
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
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
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
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
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
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
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
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
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