AnyAPI Catalog API

The Catalog API from AnyAPI — 2 operation(s) for catalog.

Operations 2

GET /catalog Browse the API catalog #
GET /catalog/search Search the API catalog #

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-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 Specification

anyapi-catalog-api-openapi.yml Raw ↑
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