Restaurant & food-delivery research
Look up restaurant reviews, reservations, and delivery menus, plus grocery
search across restaurant, delivery, and grocery platforms as normalized JSON from the Crawlora API — no
scraping delivery-app pages.
When to use this skill
- "What are the reviews / menu for this restaurant?" (Yelp, OpenTable)
- "Can I book a table at ?" (OpenTable availability)
- "What's available for delivery near me?" (DoorDash, Uber Eats)
- "What's on this restaurant's delivery menu / what does this dish cost?"
- "Search groceries at this Instacart store."
Setup (one-time)
- Get a free Crawlora API key (2,000 credits/mo, no card) at https://crawlora.net.
- Set
CRAWLORA_API_KEY in the environment before running the helper.
- The helper reads
CRAWLORA_API_KEY from the environment and sends requests to https://api.crawlora.net/api/v1. Missing/invalid key → 401.
How it works
Most of these platforms are location-scoped — every search/store call
needs a latitude/longitude (or postal_code), not just a keyword.
- Yelp —
/yelp/search (term+location) or geocode an address first
with /yelp/geocode; /yelp/business/{id} for detail, /reviews (+
/reviews/search, /reviews/highlights), /menu, /photos.
- OpenTable —
/opentable/search (term+latitude+longitude) to
find a restaurant, then /opentable/restaurant (restaurant_id,
optional date_time+party_size for availability context), /menus, /reviews.
- DoorDash —
/doordash/search (query+latitude+longitude,
required) or /doordash/feed//doordash/explore to browse nearby
restaurants; /doordash/store/{store_id} (+ /menu, /info, /reviews)
for one restaurant — every store call also needs latitude+longitude.
- Uber Eats —
/ubereats/search (latitude+longitude, query
optional) or /ubereats/feed; /ubereats/store/{store_id} (+ /menu,
/reviews).
- Instacart — resolve a store first via
/instacart/stores
(postal_code) to get its shop_id/store_slug, then
/instacart/search (shop_id+store_slug+q) for product-term
suggestions, /instacart/departments for its category taxonomy,
/instacart/trending (postal_code) for popular items.
Full endpoint list, methods, and params: reference/endpoints.md.
Calling the API
# Yelp:
scripts/crawlora.sh /yelp/search term="ramen" location="San Francisco, CA" | jq '.'
# DoorDash (lat/lon required):
scripts/crawlora.sh /doordash/search query="pizza" latitude=37.7749 longitude=-122.4194 | jq '.'
# OpenTable:
scripts/crawlora.sh /opentable/search term="Italian" latitude=37.7749 longitude=-122.4194 | jq '.'
# Instacart (resolve store first):
scripts/crawlora.sh /instacart/stores postal_code=94103 | jq '.'
Use scripts/crawlora.sh for all requests; it keeps the API key out of command-line arguments.
Endpoint reference
See reference/endpoints.md for the full supported restaurant, chain-menu, delivery, and grocery catalog.
Examples
- Cross-app delivery compare:
/doordash/search and /ubereats/search
for the same coordinate + cuisine, compare which restaurants/prices show up.
- Restaurant due diligence:
/yelp/business/{id} (rating, review
highlights) + /opentable/restaurant/reviews before booking.
- Grocery run:
/instacart/stores to find the nearest store, then
/instacart/departments to browse its categories.
Notes & limits
- Credits / pay-on-success: billed only on
2xx; free tier 2,000 credits/mo.
Key at https://crawlora.net.
- Public data only — public listing/menu/review pages; no ordering or
payment actions are performed.
- Security: key lives in
CRAWLORA_API_KEY only — never hardcode, query-param, or commit it.
- Location is required, not optional, for DoorDash, Uber Eats, and
OpenTable search/store calls — geocode an address first (e.g. via
/yelp/geocode or the geocoding_* endpoints in web-utilities-research)
if you only have a street address.
- Instacart is store-scoped — you need a
shop_id+store_slug (from
/instacart/stores) before search/item/departments will work.
1---2name: restaurant-food-delivery-research3description: Researches restaurants and grocery/food delivery via the Crawlora API — Yelp reviews, OpenTable reservations, DoorDash and Uber Eats restaurant search/menus, and Instacart grocery search — returning clean JSON. Use when the user wants restaurant reviews or menus, delivery options near a location, or grocery product/store search.4---56# Restaurant & food-delivery research78Look up restaurant reviews, reservations, and delivery menus, plus grocery9search across restaurant, delivery, and grocery platforms as normalized JSON from the Crawlora API — no10scraping delivery-app pages.1112## When to use this skill1314- "What are the reviews / menu for this restaurant?" (Yelp, OpenTable)15- "Can I book a table at <restaurant>?" (OpenTable availability)16- "What's available for delivery near me?" (DoorDash, Uber Eats)17- "What's on this restaurant's delivery menu / what does this dish cost?"18- "Search groceries at this Instacart store."1920## Setup (one-time)2122- Get a free Crawlora API key (2,000 credits/mo, no card) at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).23- Set `CRAWLORA_API_KEY` in the environment before running the helper.24- The helper reads `CRAWLORA_API_KEY` from the environment and sends requests to `https://api.crawlora.net/api/v1`. Missing/invalid key → `401`.2526## How it works2728Most of these platforms are **location-scoped** — every search/store call29needs a `latitude`/`longitude` (or `postal_code`), not just a keyword.30311. **Yelp** — `/yelp/search` (`term`+`location`) or geocode an address first32 with `/yelp/geocode`; `/yelp/business/{id}` for detail, `/reviews` (+33 `/reviews/search`, `/reviews/highlights`), `/menu`, `/photos`.342. **OpenTable** — `/opentable/search` (`term`+`latitude`+`longitude`) to35 find a restaurant, then `/opentable/restaurant` (`restaurant_id`,36 optional `date_time`+`party_size` for availability context), `/menus`, `/reviews`.373. **DoorDash** — `/doordash/search` (`query`+`latitude`+`longitude`,38 required) or `/doordash/feed`/`/doordash/explore` to browse nearby39 restaurants; `/doordash/store/{store_id}` (+ `/menu`, `/info`, `/reviews`)40 for one restaurant — **every store call also needs `latitude`+`longitude`**.414. **Uber Eats** — `/ubereats/search` (`latitude`+`longitude`, `query`42 optional) or `/ubereats/feed`; `/ubereats/store/{store_id}` (+ `/menu`,43 `/reviews`).445. **Instacart** — resolve a store first via `/instacart/stores`45 (`postal_code`) to get its `shop_id`/`store_slug`, then46 `/instacart/search` (`shop_id`+`store_slug`+`q`) for product-term47 suggestions, `/instacart/departments` for its category taxonomy,48 `/instacart/trending` (`postal_code`) for popular items.4950Full endpoint list, methods, and params: [`reference/endpoints.md`](reference/endpoints.md).5152## Calling the API5354```sh55# Yelp:56scripts/crawlora.sh /yelp/search term="ramen" location="San Francisco, CA" | jq '.'5758# DoorDash (lat/lon required):59scripts/crawlora.sh /doordash/search query="pizza" latitude=37.7749 longitude=-122.4194 | jq '.'6061# OpenTable:62scripts/crawlora.sh /opentable/search term="Italian" latitude=37.7749 longitude=-122.4194 | jq '.'6364# Instacart (resolve store first):65scripts/crawlora.sh /instacart/stores postal_code=94103 | jq '.'66```6768Use `scripts/crawlora.sh` for all requests; it keeps the API key out of command-line arguments.697071## Endpoint reference7273See [`reference/endpoints.md`](reference/endpoints.md) for the full supported restaurant, chain-menu, delivery, and grocery catalog.7475## Examples7677- **Cross-app delivery compare:** `/doordash/search` and `/ubereats/search`78 for the same coordinate + cuisine, compare which restaurants/prices show up.79- **Restaurant due diligence:** `/yelp/business/{id}` (rating, review80 highlights) + `/opentable/restaurant/reviews` before booking.81- **Grocery run:** `/instacart/stores` to find the nearest store, then82 `/instacart/departments` to browse its categories.8384## Notes & limits8586- **Credits / pay-on-success:** billed only on `2xx`; free tier 2,000 credits/mo.87 Key at [https://crawlora.net](https://crawlora.net?utm_source=github&utm_medium=referral&utm_campaign=crawlora-skills).88- **Public data only** — public listing/menu/review pages; no ordering or89 payment actions are performed.90- **Security:** key lives in `CRAWLORA_API_KEY` only — never hardcode, query-param, or commit it.91- **Location is required, not optional**, for DoorDash, Uber Eats, and92 OpenTable search/store calls — geocode an address first (e.g. via93 `/yelp/geocode` or the `geocoding_*` endpoints in `web-utilities-research`)94 if you only have a street address.95- **Instacart is store-scoped** — you need a `shop_id`+`store_slug` (from96 `/instacart/stores`) before `search`/`item`/`departments` will work.