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
| Field | Type | Required | Description |
|---|---|---|---|
| query | string | yes | Plain-language product search, max 200 chars |
| max_results | int | no | Items per network. Default 5, max 20 |
| max_price | number | no | Upper price bound in GBP, applied at source |
| networks | string[] | no | ebay_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_type | Meaning |
|---|---|
| item | A real listing: live price, condition, image, item-level buy link with affiliate tracking applied by the marketplace |
| search_link | Fallback: 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.
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
| Plan | Lookups/month | Access | Price |
|---|---|---|---|
| Free | 50 | REST, all networks | £0 — register |
| Pro | 5,000 | REST, priority, BYOK | £29/mo — subscribe |
| Scale | Unlimited | REST + WebSocket, BYOK | £99/mo — subscribe |
| Trade | Unlimited | REST + CSV + distressed inventory | £99/mo — contact |