Everything you need to build price intelligence.

One request returns matched products with their merchant offers inline — seller, price, currency and stock.

TEXT
GETapi.pricesapi.io/api/v1/products/search?q=MacBook+Pro+M5+14-inch+512GB+Space+Black&country=us&limit=3&offers_limit=15
Get a free key to run →

A free account comes with 3,000 credits — 300 Searches, or 3,000 product reads. This query and these markets carry over to the playground.

Markets (1 selected)
Try a sample
The platform

From product discovery to ongoing price intelligence.

Each stage is its own call — compose the ones you need, in any order. Global coverage across supported markets; availability varies by product and market.

  1. Discover

    Available

    Matched products and current merchant offers.

  2. Snapshot

    Public Beta

    Read a known product without re-running discovery.

  3. History

    Public Beta

    Retained observations with timestamps and gaps.

  4. Monitor

    Coming next

    Not publicly available yet.

  5. Deliver

    Available

    Return normalized product and offer data as documented JSON.

Ways to access PricesAPI today

GET/api/v1/products/search10 credits

Product Search API

Available

One product name or retailer URL in; matched candidates with merchant offers inline.

Request
curl "https://api.pricesapi.io/api/v1/products/search?q=Sony+WH-1000XM5&market=us" \
  -H "Authorization: Bearer $PRICESAPI_KEY"
200 · abbreviated
{
  "success": true,
  "data": {
    "query": "Sony WH-1000XM5",
    "market": "us",
    "products": [
      {
        "pid": 100569554,
        "title": "Sony WH-1000XM5 Wireless Noise Cancelling Headphones",
        "headline_price": 329.99,
        "headline_currency": "USD",
        "offerCount": 3,
        "offers": [
          { "seller": "Best Buy", "price": 248, "currency": "USD", "stock_status": "In stock" }
        ]
      }
    ]
  },
  "meta": { "latency_ms": 41822, "cache_source": "miss" }
}

limit 1–5, default 3 · offers_limit 1–60, default 15 · wrapped in success / data / meta · a cold call collects live, so allow 95s

GET/api/v1/products/catalog0 credits

Product Catalog Lookup

Beta

Resolve product or seller text to PricesAPI product IDs, with the retained coverage held for each.

Request
curl "https://api.pricesapi.io/api/v1/products/catalog?q=anko+7.5l+air+fryer&market=au" \
  -H "Authorization: Bearer $PRICESAPI_KEY"
200 · abbreviated
{
  "products": [
    {
      "id": "104751632",
      "id_type": "pricesapi",
      "market": "au",
      "title": "Anko 7.5L Air Fryer",
      "retained": {
        "offer_count": 152,
        "days_with_offers": 48,
        "first_date_with_offers": "2026-05-24",
        "last_date_with_offers": "2026-09-16"
      },
      "sellers": [
        { "id": "49", "name": "Kmart", "days_with_offers": 48 }
      ]
    }
  ],
  "page": { "limit": 10, "returned": 1, "next_cursor": null }
}

q or seller required · limit 1–20, default 10 · no wrapper: products, page, market_catalog at the top level · returns no prices

GET/api/v1/products1 credit

Product Snapshot

Beta

Read one known product and market from retained evidence, without running Search.

Request
curl "https://api.pricesapi.io/api/v1/products?id=123456&id_type=pricesapi&market=gb&offers_limit=20" \
  -H "Authorization: Bearer $PRICESAPI_KEY"
200 · abbreviated
{
  "product": {
    "id": "123456", "id_type": "pricesapi", "market": "gb",
    "title": "Example Headphones 2025 Model",
    "image_url": null, "catalog_id": "catalogue-123", "status": "active"
  },
  "observation": {
    "state": "observed", "reason": null,
    "observed_at": "2026-09-16T22:01:55.004Z",
    "age_seconds": 3600, "stale_after_seconds": 93600, "stale": false
  },
  "offers": [
    {
      "seller_id": "4412", "seller": "Argos", "seller_domain": "argos.co.uk",
      "price": 229.99, "currency": "GBP",
      "availability": "in_stock", "availability_raw": "In stock",
      "title": "Example Headphones 2025 Model",
      "observed_at": "2026-09-16T22:01:55.004Z"
    }
  ],
  "offers_page": { "limit": 20, "returned": 1, "truncated": false }
}

offers_limit 0–60, default 20 · 0 returns the product with an empty offers array · out of range is 400 INVALID_OFFERS_LIMIT · no success wrapper, so branch on body.error

POST/api/v1/products/batch1 credit

Product Snapshot Batch

Beta

Up to 100 known product identities, in input order, with explicit per-item misses.

Request
curl -X POST "https://api.pricesapi.io/api/v1/products/batch" \
  -H "Authorization: Bearer $PRICESAPI_KEY" -H "Content-Type: application/json" \
  -d '{"items":[{"id":"123456","id_type":"pricesapi","market":"gb"},{"id":"catalogue-9","id_type":"catalog","market":"gb"}]}'
200 · abbreviated
{
  "results": [
    {
      "input_index": 0, "status": "found",
      "product": { "id": "123456", "id_type": "pricesapi", "market": "gb" },
      "observation": { "state": "observed", "stale": false },
      "offers": [ { "seller": "Argos", "price": 229.99, "currency": "GBP", "availability": "in_stock" } ],
      "offers_page": { "limit": 20, "returned": 1, "truncated": false }
    },
    {
      "input_index": 1, "status": "not_found",
      "error": { "code": "PRODUCT_NOT_FOUND", "message": "No product for that id in that market." }
    }
  ],
  "summary": { "requested": 2, "distinct_lookups": 2, "found": 1, "not_found": 1 }
}

items 1–100, else 400 INVALID_BATCH · per-item offers_limit is a JSON number 0–60, so "3" is refused · every requested item counts against the per-minute bound

GET/api/v1/product-clusters1 credit a page, however many members

Product Clusters

Beta

Page the known products belonging to one Google product-cluster ID — membership, not a Search ranking.

Request
curl "https://api.pricesapi.io/api/v1/product-clusters?id=cluster-123&id_type=cluster&market=gb&limit=100" \
  -H "Authorization: Bearer $PRICESAPI_KEY"
200 · abbreviated
{
  "cluster": { "id": "cluster-123", "id_type": "cluster", "market": "gb" },
  "products": [
    {
      "id": "123456", "id_type": "pricesapi", "catalog_id": "catalogue-123",
      "title": "Example Headphones 2025 Model", "brand": "Example",
      "image_url": null, "status": "active", "offline_at": null
    }
  ],
  "page": { "limit": 100, "returned": 1, "next_cursor": null }
}

limit 1–100, else 400 INVALID_CLUSTER_LIMIT · offers_limit is a single-product parameter and is refused here · no success wrapper, so branch on body.error · page with no members costs nothing

GET/api/v1/products/history1 credit a day of offers returned

Product History

Beta

Retained price observations for a known product and market, with explicit gaps.

Request
curl "https://api.pricesapi.io/api/v1/products/history?id=123456&id_type=pricesapi&market=gb&from=2025-01-01&to=2025-12-31" \
  -H "Authorization: Bearer $PRICESAPI_KEY"
200 · abbreviated
{
  "product": { "id": "123456", "id_type": "pricesapi", "market": "gb", "currency": "GBP" },
  "window": {
    "from": "2025-01-01", "to": "2025-12-31",
    "as_of": "2026-09-17T00:00:00.000Z",
    "days_requested": 365, "days_with_offers": 12,
    "offer_count": 48,
    "first_recorded_at": "2025-06-02T03:14:07.120Z",
    "last_recorded_at": "2025-11-30T22:01:55.004Z"
  },
  "offers": [
    {
      "recorded_at": "2025-06-02T03:14:07.120Z",
      "seller_id": "4412", "seller": "Argos", "seller_domain": "argos.co.uk",
      "price": 229.99, "currency": "GBP",
      "product_title": "Example Headphones 2025 Model",
      "stock_status": "In stock"
    }
  ],
  "page": { "limit": 250, "returned": 48, "next_cursor": null }
}

window up to 1,500 days · limit 1–1,000, default 250, else 400 INVALID_LIMIT · two requests in flight per account · missing days are omitted, never zero-filled

POST/api/v1/schedules0 credits

Schedules

Beta

Recurring daily or weekly catalogue discovery. Management and background refreshes are free.

Request
curl -X POST "https://api.pricesapi.io/api/v1/schedules" \
  -H "Authorization: Bearer $PRICESAPI_KEY" -H "Content-Type: application/json" \
  -d '{"terms":[{"term":"Sony WH-1000XM5","market":"us","frequency_minutes":10080}]}'

terms 1–1,000 PER REQUEST — how many you may keep running is your plan's slot cap, not this number · each term carries its own explicit market · frequency_minutes 1440 daily or 10080 weekly · per-term outcomes and the full response shape are in the Schedules guide

POST/api/v1/search/jobs10 credits an item

Async Bulk Search

Beta

A durable one-off job of up to 100 Search items, then paged results.

Request
curl -X POST "https://api.pricesapi.io/api/v1/search/jobs" \
  -H "Authorization: Bearer $PRICESAPI_KEY" -H "Content-Type: application/json" \
  -H "Idempotency-Key: $YOUR_JOB_KEY" \
  -d '{"searches":[{"q":"Sony WH-1000XM5","market":"us"}]}'
200 · abbreviated
{
  "success": true,
  "data": {
    "job": {
      "id": "0f9c2b7e-4a1d-4c53-9a2f-1b6e5d0c8a34",
      "created_at": "2026-09-21T09:00:00.000Z",
      "expires_at": "2026-09-21T09:30:00.000Z",
      "total": 1, "pending": 1, "running": 0,
      "succeeded": 0, "empty": 0, "failed": 0, "cancelled": 0,
      "reserved": 10, "consumed": 0, "refunded": 0
    },
    "replayed": false
  }
}

searches 1–100 · Idempotency-Key required, 1–255 chars · poll GET /search/jobs/:id until pending + running is 0 · results limit 1–200, default 50

POSThttps://mcp.pricesapi.io/mcpSame as REST

Hosted MCP

Beta

Search, read, schedule and run bulk jobs from an MCP client with bearer auth.

Request
{
  "mcpServers": {
    "pricesapi": {
      "url": "https://mcp.pricesapi.io/mcp",
      "headers": { "Authorization": "Bearer $PRICESAPI_KEY" }
    }
  }
}

Same operations and response shapes as REST, with tighter list bounds so one tool result cannot fill an agent's context · each tool states its own bound · OAuth is not available yet

Product Search is available now. Schedules, Async Bulk Search, Product Snapshot, and Price History are in public Beta for every valid API account. Retained-history depth varies by product and market. Product Watches are coming next and are not publicly available yet.

Pricing models, included allowances, and usage limits for all Beta features may change before general availability. Existing Product Search pricing and credit allowances remain unchanged unless separately announced.

● CATALOGUE SAMPLE

Recently tracked.

Real products and merchant offers recently processed by PricesAPI. Prices and availability change — run your own query for the current response.

Pricing

Plans for product Search.

Start free. The voluntary 14-day guarantee covers an initial paid self-service purchase.

Personal
Perfect for trying out the API
$0
3,000 credits, one-time
300 Searches or 3,000 retained reads · 6 req/min
Up to 25 Schedule slots, shared
  • A one-time grant — it does not renew
  • No card required
  • Bearer header + query auth
Start free
Business
For scaling applications
$199/mo
180,000 credits / month
18,000 Searches or 180,000 retained reads · 1.1¢ a Search · 40 req/min
1,500 Schedule slots
  • 48% more credits per dollar than Developer
  • Allowance renews every billing month
  • Email support
Create account to subscribe
Enterprise
Custom solutions for large teams
Custom
Volume set with you
Priced on your volume · 60 req/min
Schedule volume set with you
  • Rate limits raised to your workload
  • Invoicing and custom terms
  • Contact us about support needs
Contact sales

What each call costs

OperationCreditsCharged per
Search Products10 creditsPer response that returns at least one product. A cache hit costs the same as a live scrape; empty results and failed requests cost nothing.
Async Bulk Search10 creditsPer item, reserved when the job is submitted — the same as a Search, because it is the same work. Empty, failed and cancelled-before-start items are refunded; checking status, reading results and cancelling cost nothing.
Product Snapshot1 creditPer product read by its ID. A retained read, priced at a tenth of a Search. Not-found products and failed requests cost nothing.
Product Snapshot Batch1 creditPer product RETURNED, never per call — the same price as a single Product Snapshot, because it is the same retained read. Items the batch could not find, and failed requests, cost nothing.
Product Clusters1 creditPer page returned, never per member: one credit buys as many members as you ask for, up to the limit of 100 per page. The same price as a single Product Snapshot, because it is the same retained read. A page with no members, and failed requests, cost nothing.
Price History1 creditOne credit for each day in your requested window with at least one recorded offer. A 365-day window with offers on 18 days costs 18 credits. Your balance must initially cover all 365 requested days; credits for days without offers are returned. Catalogue coverage describes all stored history, not an exact quote for your selected window. Following the next-page cursor costs nothing more. Empty windows and failed requests cost nothing.
Catalogue lookup0 creditsTurns product or seller text into the IDs every other operation needs. Free, so that finding an ID never costs a Search.
Schedules0 creditsCreating, listing, pausing and deleting schedules is free, and a background refresh uses no credit. A later Search that returns products bills normally.

Operations that cost 0 credits keep working if your credits run out, but are still subject to endpoint rate limits. Everything else is charged only for a response that carries data: empty results, not-found products and failed requests cost nothing.

Pricing models, included allowances, and usage limits for all Beta features may change before general availability. Existing Product Search pricing and credit allowances remain unchanged unless separately announced.

Schedules Beta

Recurring discovery, included

Run selected searches through recurring catalogue discovery. Weekly and daily cadences are available globally across supported markets. Sub-daily cadences are not available yet.

There is no separate scheduling fee.

Read the guide
Beta capability

Keep your repeat product searches running.

One request away.

Free account, no card. 3,000 credits to try it — 300 Searches, or 3,000 product reads — then upgrade in the dashboard when you need more.

Get an API keyTry the playgroundView examples