restaurant-food-delivery-research
stars:0
forks:1
watches:0
last updated:2026-08-10 07:51:26
Restaurant & food-delivery research
Look up restaurant reviews, reservations, and delivery menus, plus grocery search, across five 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.
export CRAWLORA_API_KEY=sk_your_key_here- All requests:
x-api-key: $CRAWLORA_API_KEYagainsthttps://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, optionaldate_time+party_sizefor availability context),/menus,/reviews. - DoorDash —
/doordash/search(query+latitude+longitude, required) or/doordash/feed//doordash/exploreto browse nearby restaurants;/doordash/store/{store_id}(+/menu,/info,/reviews) for one restaurant — every store call also needslatitude+longitude. - Uber Eats —
/ubereats/search(latitude+longitude,queryoptional) or/ubereats/feed;/ubereats/store/{store_id}(+/menu,/reviews). - Instacart — resolve a store first via
/instacart/stores(postal_code) to get itsshop_id/store_slug, then/instacart/search(shop_id+store_slug+q) for product-term suggestions,/instacart/departmentsfor 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 '.'
Raw curl fallback:
curl -fsS -H "x-api-key: $CRAWLORA_API_KEY" \
"https://api.crawlora.net/api/v1/ubereats/search?latitude=37.7749&longitude=-122.4194&query=sushi" | jq '.'
Endpoint reference
See reference/endpoints.md for every Yelp,
OpenTable, DoorDash, Uber Eats, and Instacart endpoint this skill uses.
Examples
- Cross-app delivery compare:
/doordash/searchand/ubereats/searchfor the same coordinate + cuisine, compare which restaurants/prices show up. - Restaurant due diligence:
/yelp/business/{id}(rating, review highlights) +/opentable/restaurant/reviewsbefore booking. - Grocery run:
/instacart/storesto find the nearest store, then/instacart/departmentsto 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_KEYonly — 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/geocodeor thegeocoding_*endpoints inweb-utilities-research) if you only have a street address. - Instacart is store-scoped — you need a
shop_id+store_slug(from/instacart/stores) beforesearch/item/departmentswill work.
