Documentation

fetch-price API

Live UK marketplace product search for AI agents and humans. One POST request returns real items with real prices, normalised JSON, and affiliate-tracked buy links. eBay UK is live via the official Browse API; Amazon UK is rolling out.

Quick start

No key needed on the free tier. One request, live data:

curl -X POST https://api.fetch-price.com/api/query \
  -H "Content-Type: application/json" \
  -d '{"query":"portable air conditioner","max_results":3,"max_price":300,"networks":["ebay_uk"]}'

Live response (captured 27 Jul 2026):

{
  "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}
}

Get an API key

The free tier works without authentication (50 lookups/month). Register to get an fp_ key, higher limits, and BYOK affiliate routing:

curl -X POST https://api.fetch-price.com/api/agents/register \
  -H "Content-Type: application/json" \
  -d '{
    "name": "MyShoppingAgent",
    "owner": "[email protected]",
    "networks": {"ebay_uk": {"campaign_id": "YOUR_EPN_CAMPAIGN_ID"}},
    "endpoint": "https://your-agent.example.com"
  }'

→ {"agent_id": "agent-...", "api_key": "fp_...", "tier": "free", "query_limit": 50}

Send the key on every request as X-API-Key: fp_... (or Authorization: Bearer fp_...). For Pro/Scale/Trade limits, see pricing.

Endpoints

Base URL: https://api.fetch-price.com

POST /api/query — product search

FieldTypeRequiredDescription
querystringyesPlain-language product search, max 200 chars
max_resultsintnoItems per network. Default 5, max 20
max_pricenumbernoUpper price bound in GBP, applied at source
networksstring[]noebay_uk (live), amazon_uk (rolling out). Default: both

GET /health — service status

→ {"status": "ok", "version": "1.1.0", "networks": ["ebay_uk","amazon_uk"], "ebay_live": true}

POST /api/agents/register — create an agent + key

Fields: name, owner, networks, endpoint (all required), optional commission_split. See Get a key.

GET /api/stats — public stats

→ {"agents_active": 1, "networks_available": ["ebay_uk","amazon_uk"], "version": "1.1.0"}

Result format

Every result declares what it is via result_type — the API never dresses a search page up as a product:

result_typeMeaning
itemA real listing: live price, condition, image, item-level buy link with affiliate tracking applied by the marketplace
search_linkFallback: a tracked marketplace search URL with price: 0. Served for networks not yet live (Amazon UK) or if the upstream API is briefly unavailable

Item results include product, price, currency, condition, network, url, image, and item_id.

BYOK — bring your own affiliate tag

On a paid plan (Pro or Scale), register with your own eBay Partner Network campaign_id and every item link returned to your key carries your tracking — eBay pays your commission directly to you. No commission sharing, no waiting on us to pay out, no ToS grey areas: your traffic, your approved account, your money.

Free-tier and untagged requests use fetch-price's own tracking. That's the whole model — either we earn the commission, or you pay for the calls — and the convenience (one API, normalised JSON, no marketplace credentials to manage) is the same either way.

You need your own EPN account for BYOK (approval takes a few days at partnernetwork.ebay.com). Skip it and links simply run on our tag.

MCP server

A one-file stdio MCP server for Claude Code, Claude Desktop, Cursor, and any MCP-capable client lives in the public repo:

git clone https://github.com/fusionx212/fetch-price
pip install "mcp[cli]" httpx

# Claude Code
claude mcp add fetch-price -- python fetch-price/mcp/fetch_price_mcp.py

Tools exposed: search_products (query, max_price, max_results, networks) and service_status. PyPI/npm packages are being published — until then, install from the repo.

Rate limits

30 requests/minute per key (or per IP when keyless). Every response carries X-RateLimit-Limit and X-RateLimit-Remaining headers; excess requests get HTTP 429. Monthly lookup quotas are per plan.

Pricing

PlanLookups/monthAccessPrice
Free50REST, all networks£0 — register
Pro5,000REST, priority, BYOK£29/mo — subscribe
ScaleUnlimitedREST + WebSocket, BYOK£99/mo — subscribe
TradeUnlimitedREST + CSV + distressed inventory£99/mo — contact