# DoorDash Scraper API — $0.001 per restaurant

> DoorDash Scraper API: Restaurants delivering in a US city — rating, exact review. $0.001 per delivered restaurant, nothing delivered means nothing charged.

[Home](https://quanticdata.io/)/[Collectors](https://quanticdata.io/collectors/)/*DoorDash Scraper API*

# DoorDash Scraper API

A DoorDash scraper API that lists the restaurants delivering in a US city: name, rating, the exact review count, cuisine, price band, full address, image and store URL. Pass the city the way you would say it — “Austin, TX” — and optionally a cuisine to reach beyond the first page DoorDash shows.

By [Aldo Morese](https://quanticdata.io/about/), founder of QuanticData · Published Aug 21, 2026 · Updated Sep 3, 2026

[Get my free API key](https://app.quanticdata.io/register) [See the request](/collectors/doordash-scraper-api/#integration)

$0.001 per delivered restaurant · $2 free every month · Failed runs never billed

POST /v1/scraper/collectors/doordash_restaurants/run

```
$ curl $QD/doordash_restaurants/run \
    -H "Authorization: Bearer $QD_API_KEY" \
    -d '{"location": "Austin,  TX", "max_results": 50}'
{ "status": "done", "count": 50,
  "results": [
    {
      "id": "…",
      "name": "…",
      "rating": …,
      "reviews": … } ],
  "cost": 0.05 }
# 50 restaurants × $0.001 · nothing delivered, nothing charged
```

You send location and cuisine; the run goes out through a residential exit and comes back as restaurants with rank, id and name — 14 fields on every row — and you are billed $0.001 for each restaurant actually delivered, nothing for a run that delivers none.

**$0.001 / restaurant**2,000 restaurants on the free $2 every month

**Semantic input**location, cuisine, country — no URL lists

**Up to 50**restaurants per run, pagination handled for you

**No browser**read over HTTP/TLS — cheaper and faster than rendering

On this page: [Try it](/collectors/doordash-scraper-api/#try) [What it is](/collectors/doordash-scraper-api/#what) [Limits](/collectors/doordash-scraper-api/#caps) [Output fields](/collectors/doordash-scraper-api/#output) [Inputs](/collectors/doordash-scraper-api/#input) [Pricing](/collectors/doordash-scraper-api/#pricing) [Integration](/collectors/doordash-scraper-api/#integration) [Use cases](/collectors/doordash-scraper-api/#use-cases) [Versus the alternatives](/collectors/doordash-scraper-api/#compare) [FAQ](/collectors/doordash-scraper-api/#faq)

Try it

## DoorDash restaurants, running now

Change the input and run it against the live collector — nothing to install, no sign-up.

Run it from your own code, on your own inputs

Same collector, same rows — $2 of free API credit every month, no card.

[Get my free API key](https://app.quanticdata.io/register)

## What a DoorDash scraper API does

DoorDash publishes a schema.org list of each city’s restaurants for search engines, and that block is what this collector reads. It is the better source in a way you can measure: the JSON states `reviewCount: 684` where the rendered card says only “(600+)”, and it keeps the stores that have no rating yet, where the DOM drops their rating node and leaves you with 46 ratings to zip against 50 cards. Two quirks make a by-the-spec parser return nothing — the block is wrapped in DoorDash’s own envelope and found by its key, not by position, and the rating field is spelled `aggregatedRating`, against the standard — and both are absorbed here.

One city page is all a plain fetch gets; DoorDash has no pagination on it. So breadth comes from cuisine facets rather than paging: pass `cuisine` and the run reads that facet’s page instead. The city is turned into DoorDash’s own slug (“Austin, TX” → `austin-tx`) so you never build a URL.

Input is meaning, not a URL *location* *cuisine* *country* *max_results*

## Limits, in plain numbers

Everything that bounds one run of this collector. No hidden throttles.

Max per run

50 restaurants

Price

$0.001 / restaurant

Per 1,000

$1.00

Failed runs

Free zero rows, zero charge

Free every month

$2 no card

Rate limit

60 req/min on the free tier

## What one restaurant looks like

Every delivered restaurant carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.

| Field | Type | What it holds |
| --- | --- | --- |
| `rank` | integer | Position in DoorDash's order for this city. |
| `id` | string · nullable | DoorDash store id. |
| `name` | string | Restaurant name. |
| `rating` | number · nullable | Average rating out of 5. Null on stores with too few ratings. |
| `reviews` | integer · nullable | Exact review count — the rendered page only shows it rounded. |
| `cuisine` | string · nullable | Primary cuisine. |
| `price_range` | string · nullable | Price band ($ to $$$$). |
| `street` | string · nullable | Street address. |
| `city` | string · nullable | City. |
| `state` | string · nullable | State code. |
| `postal_code` | string · nullable | ZIP. DoorDash often leaves this empty. |
| `country` | string · nullable | Country. |
| `image` | string · nullable | Store photo URL. |
| `url` | string · nullable | Store page URL. |

## Inputs

The whole request. Anything you leave out falls back to the default shown in the catalog.

| Input | Type | Required | What it does |
| --- | --- | --- | --- |
| `location` | string | yes | US city and state, e.g. "Austin, TX". |
| `cuisine` | string | no | Narrow to one cuisine, e.g. "mexican" or "sushi". Each cuisine is its own full page, so this is how you collect more than one page's worth for a city. |
| `country` | string | no | ISO 3166-1 alpha-2 code — proxy exit geo and Google locale (gl). Omit for the default pool. |
| `max_results` | integer | no | How many restaurants to deliver at most (1–50). You pay only for delivered restaurants. |

Pricing

## DoorDash Scraper API pricing

$0.001 per delivered restaurant. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 2,000 restaurants before you spend anything.

**$0.001**per delivered restaurant*$1 per 1,000 delivered restaurants*

**2,000 restaurants**on the free allowance*$2 every month, no card*

**Zero rows**zero charge*blocks, captchas and retries are on us*

**−30%**on volume tiers*the catalog returns your key's price*

### Pay as you go

$0/mo

- $2 free credit / month

- 60 requests / min

- List unit prices

### Starter

$19/mo

- $15 free credit / month

- 300 requests / min

- 10% off unit prices

Most popular

### Growth

$79/mo

- $50 free credit / month

- 600 requests / min

- 20% off unit prices

### Scale

$299/mo

- $250 free credit / month

- 1,200 requests / min

- 30% off unit prices

Same wallet, same key and same $2 monthly allowance as every other [Data API](https://quanticdata.io/web-data-api-for-ai/). Prices are launch pricing read live from the billing config — `GET /v1/scraper/collectors` returns the price your key actually pays.

Integration

## One POST, typed rows

Base URL `https://api.quanticdata.io/v1`, Bearer auth, the same key as every other Data API. Endpoint: `POST /v1/scraper/collectors/doordash_restaurants/run`.

```
curl -X POST https://api.quanticdata.io/v1/scraper/collectors/doordash_restaurants/run \
  -H "Authorization: Bearer $QD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"location":"Austin, TX","max_results":50}'
```

```
import requests

r = requests.post(
    "https://api.quanticdata.io/v1/scraper/collectors/doordash_restaurants/run",
    headers={"Authorization": f"Bearer {QD_API_KEY}"},
    json={
        "location": "Austin, TX",
        "max_results": 50
    },
    timeout=120,
)
for row in r.json()["payload"]["results"]:
    print(row)
```

```
const res = await fetch(
  "https://api.quanticdata.io/v1/scraper/collectors/doordash_restaurants/run",
  {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.QD_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({"location":"Austin, TX","max_results":50}),
  },
);
const { payload } = await res.json();
console.table(payload.results);
```

```
claude mcp add quanticdata \
  -e QUANTICDATA_API_KEY=qd_live_your_key_here \
  -- npx -y quanticdata-mcp

# then, in the chat:
> run the doordash_restaurants collector with location="Austin, TX" and max_results=50
```

## What people build with the DoorDash scraper API

Three shapes of work this endpoint was designed around.

### Delivery-market mapping

Every listed restaurant in a city with cuisine, price band and address — the base layer for a food-delivery or ghost-kitchen study.

### Rating and review-count tracking

Exact review counts rather than “600+”, so a monthly diff shows real movement per store.

### Local restaurant leads

Name, address and store URL per restaurant, joinable with Google Maps and Tripadvisor rows on the same venues.

## DoorDash Scraper API versus rolling your own

The differences that actually cost time when you build this in-house.

|  | DIY scraper | This collector |
| --- | --- | --- |
| Review counts | The rounded “600+” from the card | The exact number from the structured block |
| Unrated stores | Dropped, and every later row shifts | Kept, with `rating` null |
| Reading the block | Spec-correct `aggregateRating` finds nothing | DoorDash’s envelope and misspelling handled |
| Breadth | One page, no pagination | Per-cuisine facets on request |

## What people search for

Live autocomplete demand around DoorDash restaurants, pulled with our own Keyword ideas collector.

Searches: [doordash scraper github](/collectors/doordash-scraper-api/#try) [doordash menu scraper](/collectors/doordash-scraper-api/#try) [apify doordash scraper](/collectors/doordash-scraper-api/#try) [doordash api](/collectors/doordash-scraper-api/#try) [doordash web scraper](/collectors/doordash-scraper-api/#try)

The same call you would paste into a terminal: a Bearer key, location, cuisine and country in the body, and back the envelope every QuanticData endpoint returns — type, message, payload — where count is how many restaurants arrived and usage.cost_usd is $0.05, which is 50 × $0.001. A run that delivers nothing costs nothing. The key is good for 60 req/min on the free tier.

## Sources and standards

The platform documentation and standards this collector is built against — check any claim on this page against the primary source:

- [DoorDash: developer documentation](https://developer.doordash.com/)

- [Schema.org: the Offer type](https://schema.org/Offer)

- [IETF: RFC 9309, Robots Exclusion Protocol](https://www.rfc-editor.org/rfc/rfc9309.html)

## FAQ

Questions we get about the DoorDash scraper API.

[Something else? Ask us →](mailto:hello@quanticdata.io)

### Does it read menus or prices per dish?

No. It reads the city listing — the restaurants themselves, with rating, review count, cuisine and price band. Menus are on each store page, which this collector does not open.

### Why only 50 per run?

A city page lists what DoorDash chose to show it, and there is no next page on the TLS tier. To reach more restaurants, run the same city with different `cuisine` values: each facet is its own list.

### Is the review count exact?

Yes — it comes from the structured block, which states the integer. The visible card rounds it to a threshold like “600+”.

### Which cities work?

US cities DoorDash has a page for, passed as “City, ST”. The run converts that to DoorDash’s slug; a city it does not serve returns an error rather than an empty result.

### Is there a free DoorDash scraper API?

Every account gets $2 of credit every month with no card, which is about 2,000 delivered restaurants on this endpoint at $0.001 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.

### How much does one run cost?

Multiply the rows you actually receive by $0.001. A run capped at 50 restaurants — the maximum for this collector — costs $0.05 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and `GET /v1/scraper/collectors` returns the price your key actually pays.

## Run the DoorDash scraper API now

$2 of free credit every month, no card. Your key returns its own prices from `GET /v1/scraper/collectors`.

[Get my free API key](https://app.quanticdata.io/register)

Related: [All 100 collectors](https://quanticdata.io/collectors/) [Google Maps Scraper API](https://quanticdata.io/collectors/google-maps-scraper-api/) [Google Reviews Scraper API](https://quanticdata.io/collectors/google-reviews-scraper-api/) [Tripadvisor Scraper API](https://quanticdata.io/collectors/tripadvisor-scraper-api/) [Market research data](https://quanticdata.io/market-research-data/) [Documentation](https://quanticdata.io/docs/)

## Also on this site

Quantic**Data**

Residential proxies & web data APIs for AI.

#### Proxies

- [Residential Basic](https://quanticdata.io/residential-proxies/#basic)

- [Residential Premium](https://quanticdata.io/residential-proxies/#plans)

- [Cheap Residential](https://quanticdata.io/cheap-residential-proxies/)

- [Mobile Proxies](https://quanticdata.io/mobile-proxies/)

- [Datacenter Proxies](https://quanticdata.io/datacenter-proxies/)

- [ISP Proxies](https://quanticdata.io/isp-proxies/)

- [Rotating Proxies](https://quanticdata.io/rotating-proxies/)

- [Sneaker Proxies](https://quanticdata.io/sneaker-proxies/)

- [SOCKS5 Proxies](https://quanticdata.io/socks5-proxies/)

- [IPv6 Proxies](https://quanticdata.io/ipv6-proxies/)

- [Proxy locations](https://quanticdata.io/proxies/)

#### Data APIs

- [MCP Server](https://quanticdata.io/mcp-server/)

- [Web Scraper API](https://quanticdata.io/web-scraping-api/)

- [SERP API](https://quanticdata.io/serp-api/)

- [Collectors](https://quanticdata.io/collectors/)

- [Web Data for AI](https://quanticdata.io/web-data-api-for-ai/)

- [Quantic AI](https://quanticdata.io/ai-web-scraping-service/)

- [Browser AI Agents](https://quanticdata.io/browser-ai/)

- [Crawl & Map](https://quanticdata.io/crawl-map/)

- [SEO Audit](https://quanticdata.io/seo-audit/)

#### Use cases

- [Company data](https://quanticdata.io/scrape-company-data/)

- [Price monitoring](https://quanticdata.io/competitor-price-monitoring/)

- [Market research](https://quanticdata.io/market-research-data/)

- [Real estate data](https://quanticdata.io/real-estate-data-scraping/)

- [Scrape job postings](https://quanticdata.io/scrape-job-postings/)

#### Company

- [Documentation](https://quanticdata.io/docs/)

- [Blog](https://quanticdata.io/blog/)

- [Free tools](https://quanticdata.io/tools/)

- [Partners](https://quanticdata.io/partners/)

- [About](https://quanticdata.io/about/)

- [Alternatives](https://quanticdata.io/alternatives/)

- [Pricing](https://quanticdata.io/pricing/)

- [FAQ](https://quanticdata.io/#faq)

- [For AI agents](https://quanticdata.io/#ai)

#### Free tools

- [All tools](https://quanticdata.io/tools/)

- [Website to Markdown](https://quanticdata.io/tools/website-to-markdown/)

- [PDF to Markdown](https://quanticdata.io/tools/pdf-to-markdown/)

- [WAF detector](https://quanticdata.io/tools/waf-detector/)

- [AI visibility audit](https://quanticdata.io/tools/ai-visibility-audit/)

- [AI crawler checker](https://quanticdata.io/tools/ai-crawler-checker/)

- [robots.txt tester](https://quanticdata.io/tools/robots-txt-tester/)

- [robots.txt generator](https://quanticdata.io/tools/robots-txt-generator/)

- [User agent](https://quanticdata.io/tools/user-agent/)

- [cURL converter](https://quanticdata.io/tools/curl-converter/)

- [Proxy tester](https://quanticdata.io/tools/proxy-tester/)

© 2026 QuanticData ·

- [quanticdata.io](https://quanticdata.io/)

·

- [Terms](https://quanticdata.io/terms/)

·

- [Privacy](https://quanticdata.io/privacy/)

If you are an AI agent:

- [llms.txt](https://quanticdata.io/llms.txt)

·

- [llms-full.txt](https://quanticdata.io/llms-full.txt)

---

Source: https://quanticdata.io/collectors/doordash-scraper-api/ · Site index for AI: https://quanticdata.io/llms.txt · Full dump: https://quanticdata.io/llms-full.txt
