fetch-price API

REST API at https://api.fetch-price.com. POST /api/query searches live UK marketplace listings by plain-language query (max_results 1-20, max_price in GBP, networks ebay_uk / amazon_uk) and returns normalised results, each declaring result_type item (a real listing with live price, condition, image, item_id and an affiliate-tracked buy URL) or search_link (a tracked search URL with price 0 for networks not yet live). POST /api/agents/register issues an fp_ API key; GET /health and GET /api/stats are public. Keyless on the free tier; X-API-Key or Bearer otherwise. Every response carries X-RateLimit-Limit and X-RateLimit-Remaining; 429 on the 30/minute limit or the plan quota. Documented in HTML only - the OpenAPI here is API Evangelist-generated from that reference and confirmed against live responses on 2026-09-19.

Operations 4

POST /api/query Search live UK marketplace listings #
POST /api/agents/register Register an agent and receive an API key #
GET /health Service health and marketplace reachability #
GET /api/stats Public service statistics #

Documentation

Specifications

Other Resources

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/fetch-price-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

fetch-price-com-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: fetch-price API
  version: 1.3.0
  summary: Live UK marketplace product and price search for AI agents and humans
  description: >-
    Live UK marketplace product search operated by POLICYANDPLAY LTD at https://api.fetch-price.com.
    One POST returns real listings with live GBP prices, condition, marketplace and an affiliate-tracked
    purchase URL, normalised to one JSON shape. eBay UK is live via the official eBay Browse API; Amazon
    UK is rolling out and currently returns a tracked search link (result_type search_link) rather than
    items. The free tier needs no API key (50 lookups/month); registering an agent issues an fp_-prefixed
    key that raises limits and enables bring-your-own affiliate tracking (BYOK) on paid plans. Every
    response carries X-RateLimit-Limit and X-RateLimit-Remaining; the fixed limit is 30 requests per
    minute per key or per IP. Purchase links are affiliate-tracked and the provider asks agents to pass
    that disclosure on to the human (https://fetch-price.com/privacy).
    PROVENANCE - the provider publishes no OpenAPI. This document was written by API Evangelist from the
    provider's own API reference at https://fetch-price.com/docs/ (the endpoint tables, field tables and
    captured live responses), the first-party SDK sources and the stdio MCP server source in
    https://github.com/fusionx212/fetch-price, and was checked against live unauthenticated responses
    from api.fetch-price.com on 2026-09-19 (see x-provenance). It is a description of a real, exercised
    API, not a first-party contract; treat the provider's docs as authoritative where they differ.
  contact:
    name: fetch-price (POLICYANDPLAY LTD)
    url: https://fetch-price.com/docs/
    email: contact@fetch-price.com
  license:
    name: MIT (SDKs and MCP server; the API itself carries no published licence or terms page)
    url: https://github.com/fusionx212/fetch-price
  x-generated-from: documentation
  x-authored-by: API Evangelist
x-provenance:
  method: generated
  generated: '2026-09-19'
  authored_by: API Evangelist
  publisher_openapi: none
  sources:
  - https://fetch-price.com/docs/
  - https://fetch-price.com/llms.txt
  - https://raw.githubusercontent.com/fusionx212/fetch-price/master/mcp/fetch_price_mcp.py
  - https://raw.githubusercontent.com/fusionx212/fetch-price/master/js/index.js
  - https://raw.githubusercontent.com/fusionx212/fetch-price/master/python/fetch_price/__init__.py
  exercised: true
  live_checks:
  - request: GET https://api.fetch-price.com/health
    http_status: 200
    body: '{"ebay_live":true,"networks":["ebay_uk","amazon_uk"],"status":"ok","version":"1.3.0"}'
  - request: GET https://api.fetch-price.com/api/stats
    http_status: 200
    body: '{"agents_active":1,"networks_available":["ebay_uk","amazon_uk"],"version":"1.2.0"}'
  - request: POST https://api.fetch-price.com/api/query with body {}
    http_status: 400
    body: '{"error":"query required","results":[]}'
    headers: x-ratelimit-limit 30, x-ratelimit-remaining 27, access-control-allow-origin *
  - request: GET https://api.fetch-price.com/api/query
    http_status: 405
  - request: GET https://api.fetch-price.com/
    http_status: 200
    body: '{"a2a":"POST / or /a2a (JSON-RPC 2.0, message/send)","agent_card":"/.well-known/agent-card.json","docs":"https://fetch-price.com/docs","health":"/health","query":"POST /api/query","service":"fetch-price API"}'
  not_exercised:
  - POST /api/agents/register creates an account and issues a key, so it was described from the docs only.
  - A successful POST /api/query consumes a free-tier lookup and runs a live eBay search; the 200 shape is the provider's captured live response of 27 Jul 2026 reproduced verbatim from the docs.
  openapi_probes_that_missed:
  - https://api.fetch-price.com/openapi.json (404)
  - https://api.fetch-price.com/openapi.yaml (404)
  - https://api.fetch-price.com/swagger.json (404)
  - https://api.fetch-price.com/docs (404)
  - https://fetch-price.com/openapi.json (404)
servers:
- url: https://api.fetch-price.com
  description: Production (the only base the provider publishes)
security:
- {}
- ApiKeyAuth: []
- BearerAuth: []
tags:
- name: Products
  description: Live UK marketplace product and price search
- name: Agents
  description: Agent registration and API key issuance
- name: Service
  description: Health and public statistics
paths:
  /api/query:
    post:
      operationId: queryProducts
      summary: Search live UK marketplace listings
      description: >-
        Plain-language product search across the supported UK marketplaces. Returns normalised results
        with live GBP prices, condition, marketplace, image and a direct affiliate-tracked purchase URL.
        Every result declares result_type: "item" is a real listing with a live price; "search_link" is a
        tracked marketplace search URL with price 0, served for networks not yet live (Amazon UK) or when
        an upstream API is briefly unavailable. Works without a key on the free tier (50 lookups/month,
        counted per IP); send X-API-Key or a Bearer token to use a registered agent's quota and BYOK
        affiliate routing. GET on this path returns 405.
      tags:
      - Products
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueryRequest'
            examples:
              docs-quickstart:
                summary: The quick-start request from the provider's docs
                value:
                  query: portable air conditioner
                  max_results: 3
                  max_price: 300
                  networks:
                  - ebay_uk
      responses:
        '200':
          description: Search results
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QueryResponse'
              examples:
                docs-live-response:
                  summary: Live response captured by the provider on 27 Jul 2026 (from the docs)
                  value:
                    results:
                    - product: Air Conditioning 5460BTU Remote Control Portable Air Conditioner Smart AC
                      price: 275.99
                      currency: GBP
                      condition: New
                      network: ebay_uk
                      result_type: item
                      item_id: v1|358845422976|0
                      image: https://i.ebayimg.com/images/g/.../s-l225.jpg
                      url: https://www.ebay.co.uk/itm/358845422976?...&campid=...
                    meta:
                      query: portable air conditioner
                      networks_searched:
                      - ebay_uk
                      returned: 3
        '400':
          description: Validation error (observed live with an empty body)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                query-required:
                  summary: Observed 2026-09-19 for POST /api/query with body {}
                  value:
                    error: query required
                    results: []
        '401':
          description: Key rejected. The MCP server maps this to "unauthorised - set FETCH_PRICE_API_KEY or register for a free key at fetch-price.com".
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '405':
          description: Method not allowed (observed for GET)
        '429':
          description: Rate limit exceeded - 30 requests/minute per key or per IP, or the plan's monthly lookup quota
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /api/agents/register:
    post:
      operationId: registerAgent
      summary: Register an agent and receive an API key
      description: >-
        Creates an agent record and returns an fp_-prefixed API key on the free tier (50 lookups/month).
        name, owner, networks and endpoint are all required; commission_split is optional. On a paid plan
        the networks object carries your own affiliate identifiers (an eBay Partner Network campaign_id;
        an Amazon Associates tag) so returned links carry your tracking (BYOK). The key is emailed to the
        registering address and is never shown in a public response after issuance; account deletion and
        key revocation are by email to the provider (https://fetch-price.com/privacy). Not exercised by
        API Evangelist because it creates an account.
      tags:
      - Agents
      security:
      - {}
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RegisterAgentRequest'
            examples:
              docs-register:
                summary: The registration example from the provider's docs (placeholders as published)
                value:
                  name: MyShoppingAgent
                  owner: you@example.com
                  networks:
                    ebay_uk:
                      campaign_id: YOUR_EPN_CAMPAIGN_ID
                  endpoint: https://your-agent.example.com
      responses:
        '200':
          description: Agent created; the response shape as published in the docs
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RegisterAgentResponse'
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /health:
    get:
      operationId: getHealth
      summary: Service health and marketplace reachability
      description: >-
        Read-only health check returning API availability, the API version, the configured networks and
        whether live eBay data is currently reachable (ebay_live), so calling agents can degrade
        gracefully. This is the backing call for the MCP tool service_status and the A2A skill
        service_status. Observed live 2026-09-19.
      tags:
      - Service
      security:
      - {}
      responses:
        '200':
          description: Health payload
          headers:
            X-RateLimit-Limit:
              $ref: '#/components/headers/X-RateLimit-Limit'
            X-RateLimit-Remaining:
              $ref: '#/components/headers/X-RateLimit-Remaining'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Health'
              examples:
                observed:
                  summary: Observed 2026-09-19
                  value:
                    ebay_live: true
                    networks:
                    - ebay_uk
                    - amazon_uk
                    status: ok
                    version: 1.3.0
  /api/stats:
    get:
      operationId: getStats
      summary: Public service statistics
      description: Public counters - active registered agents, available networks and the API version. Observed live 2026-09-19.
      tags:
      - Service
      security:
      - {}
      responses:
        '200':
          description: Stats payload
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Stats'
              examples:
                observed:
                  summary: Observed 2026-09-19
                  value:
                    agents_active: 1
                    networks_available:
                    - ebay_uk
                    - amazon_uk
                    version: 1.2.0
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: fp_-prefixed key issued by POST /api/agents/register. Optional on the free tier (keyless requests are counted per IP); required to use a registered agent's plan quota and BYOK routing. The first-party SDKs send this header.
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: fp_-prefixed API key
      description: The same key sent as Authorization Bearer, which is how the stdio MCP server and the provider's SKILL.md send it.
  headers:
    X-RateLimit-Limit:
      description: Requests allowed per minute for this key or IP (observed value 30)
      schema:
        type: integer
    X-RateLimit-Remaining:
      description: Requests remaining in the current minute window
      schema:
        type: integer
  schemas:
    Network:
      type: string
      description: Marketplace identifier. ebay_uk is live; amazon_uk is rolling out and returns a search_link result.
      enum:
      - ebay_uk
      - amazon_uk
    QueryRequest:
      type: object
      required:
      - query
      properties:
        query:
          type: string
          maxLength: 200
          description: Plain-language product search, max 200 chars
        max_results:
          type: integer
          minimum: 1
          maximum: 20
          default: 5
          description: Items per network. Default 5, max 20
        max_price:
          type: number
          description: Upper price bound in GBP, applied at source
        networks:
          type: array
          description: 'Marketplaces to search. Default: both. Send only when choosing - an empty array is rejected as "no valid networks" (per the first-party SDK).'
          items:
            $ref: '#/components/schemas/Network'
        min_price:
          type: number
          description: Lower price bound in GBP. Sent by the first-party JavaScript and Python SDKs; not in the docs field table.
        currency:
          type: string
          default: GBP
          description: Sent by the first-party SDKs (always GBP); not in the docs field table.
    Result:
      type: object
      description: One normalised listing. Item results include product, price, currency, condition, network, url, image and item_id.
      required:
      - product
      - price
      - currency
      - network
      - result_type
      - url
      properties:
        product:
          type: string
        price:
          type: number
          description: Live price in GBP; 0 for a search_link result
        currency:
          type: string
          example: GBP
        condition:
          type: string
          example: New
        network:
          $ref: '#/components/schemas/Network'
        result_type:
          type: string
          description: item = a real listing with a live price and item-level affiliate-tracked buy link; search_link = a tracked marketplace search URL with price 0, served for networks not yet live or if the upstream API is briefly unavailable. Never present a search_link to a user as though it were a product.
          enum:
          - item
          - search_link
        item_id:
          type: string
          description: Marketplace item identifier (eBay Browse API form, e.g. v1|358845422976|0)
        image:
          type:
          - string
          - 'null'
          format: uri
        url:
          type: string
          format: uri
          description: Direct purchase URL, affiliate-tracked by the marketplace. Present to the user unchanged.
    QueryMeta:
      type: object
      properties:
        query:
          type: string
        networks_searched:
          type: array
          items:
            $ref: '#/components/schemas/Network'
        returned:
          type: integer
    QueryResponse:
      type: object
      required:
      - results
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/Result'
        meta:
          $ref: '#/components/schemas/QueryMeta'
    RegisterAgentRequest:
      type: object
      required:
      - name
      - owner
      - networks
      - endpoint
      properties:
        name:
          type: string
          description: Agent name
        owner:
          type: string
          format: email
          description: Contact email; the API key is emailed here
        networks:
          type: object
          description: Per-network affiliate configuration keyed by network id. The docs show ebay_uk with a campaign_id (eBay Partner Network) and the home page shows amazon_uk with a tag (Amazon Associates). BYOK routing applies on paid plans only.
          additionalProperties:
            type: object
            properties:
              campaign_id:
                type: string
                description: eBay Partner Network campaign id (ebay_uk)
              tag:
                type: string
                description: Amazon Associates tag (amazon_uk)
        endpoint:
          type: string
          format: uri
          description: The agent's own endpoint URL
        commission_split:
          description: Optional; type not published
    RegisterAgentResponse:
      type: object
      properties:
        agent_id:
          type: string
          description: Prefixed agent-
        api_key:
          type: string
          description: Prefixed fp_
        tier:
          type: string
          example: free
        query_limit:
          type: integer
          example: 50
    Health:
      type: object
      properties:
        status:
          type: string
          example: ok
        version:
          type: string
        networks:
          type: array
          items:
            $ref: '#/components/schemas/Network'
        ebay_live:
          type: boolean
    Stats:
      type: object
      properties:
        agents_active:
          type: integer
        networks_available:
          type: array
          items:
            $ref: '#/components/schemas/Network'
        version:
          type: string
    Error:
      type: object
      description: 'Plain JSON error envelope (not RFC 9457): a human-readable error string; /api/query also returns an empty results array.'
      required:
      - error
      properties:
        error:
          type: string
        results:
          type: array
          items: {}