---
title: "Ecommerce product data REST API"
url: https://www.datawebot.com/api
description: "The datawebot REST API: search products, read one product with every seller's price, or run a store's exact endpoint, with one API key. JSON over HTTPS at api.datawebot.com."
author: datawebot team
---

Resources · API

# One API key. Every shop.

JSON over HTTPS at api.datawebot.com. Search products, read one product with every seller's price, or run a store's exact endpoint. The same credits and answers as the MCP server.

[Create an API key](https://www.datawebot.com/dashboard?view=api-keys) · [API reference](https://www.datawebot.com/docs/api/reference) · [OpenAPI ↗](https://www.datawebot.com/openapi.json)

First call

## Search, then read the product you want.

A search answers with products, each with a `product_id`. Read one to get its details and every seller’s price. If an answer says `status: "working"`, read it again with `GET /v1/requests/{id}`.

Search

POST /v1/requests

```
curl https://api.datawebot.com/v1/requests \
  -H "Authorization: Bearer $DATAWEBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"capability":"search","query":"running shoes","country":"US","limit":10}'
```

[What search returns](https://www.datawebot.com/search)

Product

POST /v1/requests

```
curl https://api.datawebot.com/v1/requests \
  -H "Authorization: Bearer $DATAWEBOT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"capability":"product","product_id":"<product_id from a search>"}'
```

[What a product read returns](https://www.datawebot.com/product-data)

Routes

## Requests by intent. Jobs for exact endpoints.

Every route takes `Authorization: Bearer `, and every response carries an `X-Request-Id`.

| Requests | What it does |
| --- | --- |
| `POST /v1/requests` | Ask by intent: capability search (a keyword), product (a URL or product_id) or endpoint (one exact endpoint on one URL). Answers with products in one shape. |
| `GET /v1/requests/{id}` | Finish a request that answered "working", or read the next page with a cursor. |
| `GET /v1/sites?site=` | What datawebot can do on a shop and the most each costs. Free. |
| `GET /v1/account` | Credits available and held. |

| Jobs | What it does |
| --- | --- |
| `GET /v1/job-blueprints` | Every store's endpoints: input and record schemas, examples, price and availability. Filter with q or site. |
| `POST /v1/jobs` | Run one endpoint on one URL, with an Idempotency-Key so a retry never runs twice. |
| `GET /v1/jobs/{id}` | A Job's status, original request, credits and poll guidance. |
| `GET /v1/jobs/{id}/results` | One page of a finished Job's records, raw, structured or both. |
| `GET /v1/usage` | This month's Jobs by endpoint. |

Go further

## From a first Job to a scheduled script.

The quickstart submits one Job with an Idempotency-Key, polls it and reads every results page. The CLI wraps the same Jobs routes for terminals and scripts.

[API quickstart](https://www.datawebot.com/docs/api/quickstart) · [API reference](https://www.datawebot.com/docs/api/reference) · [CLI](https://www.datawebot.com/cli) · [Stores and their endpoints](https://www.datawebot.com/scraper)

FAQ

## A few useful answers.

How do I get an API key?

Sign in by email, open API keys on the dashboard, name the key and choose when it expires. It starts with dwb_. Send it as Authorization: Bearer <key>; never put it in a URL.

Requests or Jobs?

Use requests for a keyword search or one product: datawebot picks how to answer. Use Jobs when a script needs one exact endpoint every run, such as a whole store catalogue or several pages of a category.

What does it cost?

The same credits as in your agent: up to 5 credits a search, 1 a product, and Jobs by default 5 per search or catalogue page and 1 per product page. Failed or empty requests are free; max_credits caps a request before it runs. Every account starts with 200 free credits.

Is there an OpenAPI file?

Yes, at /openapi.json, for the Jobs routes. The full reference is in the docs.
