Coding

restaurant-menu-benchmarking

Try it

Compare restaurant menu breadth, matched dishes, bundles, and location-specific prices with the Crawlora API. Use for restaurant competitor benchmarks or comparisons of direct, pickup, and delivery menus in a defined market.

What it does

Build a matched menu comparison for specified branches, dishes, and order modes. The output is a benchmark with evidence and unmatched items, not an order.

The skill document

Restaurant menu benchmarking

Build a matched menu comparison for specified branches, dishes, and order modes. The output is a benchmark with evidence and unmatched items, not an order.

Setup and API contract

Set CRAWLORA_API_KEY to your key from crawlora.net. Run the bundled scripts/crawlora.sh from this skill directory or by absolute path. It sends x-api-key to https://api.crawlora.net/api/v1; keep the key in the environment. Read reference/endpoints.md for the selected endpoints, required parameters, limits, and response behavior. Check the application code as well as HTTP status; successful payloads are inside data. Stop on 401/403, back off on 429, and retry a transient 5xx once. A failed or partial fetch is not an empty market or catalog. Bound requests to the user's scope and credit budget. For repeated collection, save the query, source IDs, pagination progress, and retrieval timestamps with the results so interrupted work can resume; do not create monitors implicitly.

Collect comparable menus

  1. Define the city or coordinates, restaurant branches, meal/daypart, currency, collection window, and order mode. Compare the same branch across channels before attributing a difference to a platform. A chain name alone is not a branch match: verify address and location using store metadata.
  2. Discover DoorDash stores with /doordash/search and Uber Eats stores with /ubereats/search. DoorDash search is a pickup catalog; do not label its prices as delivery quotes. Its store and menu calls both need the same latitude and longitude. Uber Eats IDs are storeUuid values from search; they are not DoorDash numeric IDs. Keep platform IDs separate.
  3. Use /chipotle/restaurants to resolve a nearby restaurant_number, then /chipotle/restaurant/menu for its priced menu. Preserve its dine-in and delivery price pair, including customization charges. /chipotle/menu is national taxonomy and customization context only: omitted prices are unknown, never zero. include_unavailable=true can distinguish menu presence from current availability on the restaurant endpoint.
  4. For national menu breadth, discover McDonald's categories for one country and pass that same country and returned category slug to /mcdonalds/menu. This surface has no prices. Compare its item coverage, not invented prices. National catalogs and branch menus describe different scopes.
scripts/crawlora.sh /chipotle/restaurants \
  latitude=37.7749 longitude=-122.4194 page_size=3
# Take restaurant_number from discovery before fetching /chipotle/restaurant/menu.
scripts/crawlora.sh /mcdonalds/categories country=us
scripts/crawlora.sh /doordash/search \
  query=Chipotle latitude=37.7749 longitude=-122.4194

Match and calculate

  • Retain original names and descriptions. Match dish, protein/filling, size, item count, included sides/drink, and required modifiers. Mark exact matches, comparable alternatives, and unmatched items separately; do not force a combo meal and a standalone entree into one price comparison.
  • Preserve displayed currency and price units. Inspect actual payload fields before converting minor units; an integer alone does not prove cents. A missing price is null. A free modifier is not evidence that the base dish is free.
  • For exact matches, report absolute difference and (comparison - baseline) / baseline * 100, only with a positive priced baseline. Use per-item or per-size prices only when quantities and units are known and comparable.
  • Separate regular, promotional, membership, and starting prices. Menu prices exclude any fees, taxes, tips, and minimum-order effects not explicitly returned. Do not call their sum a final checkout total. Preserve availability flags.
  • Count unique menu items separately from modifiers and bundles. Deduplicate items repeated in several menu sections without collapsing genuinely different sizes.

Deliverable

Return a table with branch/address, source and collection time, order mode, original item, matched item, portion/bundle contents, currency, price, availability, match confidence, and price difference. Include a coverage summary with fetched branches/sections and missing sources. Summarize price positioning and menu gaps as hypotheses; popularity, margins, sales volume, and customer demand are not established by menu presence. Link original URLs when returned and retain IDs and API request paths when no public item URL is supplied.

Related skills

Fetch raw ad creative, app, ranking, and revenue data from AdMapix as structured JSON.

by fly0pants4.3k installs296 stars

Post videos, photos, text, and documents to 10 social platforms through a single REST API call.

by victorcavero14375 installs50 stars

Join a video meeting as an AI bot with voice, avatar, and screenshare across four operating modes.

by johnpatternai21 installs8 stars

Adaptive web scraping in Python that bypasses anti-bot systems and scales from single requests to concurrent crawls.

by d4vinci399 installs28 stars

Trade crypto, manage a multi-chain wallet, and query an AI analyst from one CLI.

by lowesyang162 installs109 stars

Generate and edit Draw.io, Mermaid, and Excalidraw diagrams from natural language using a structured JSON spec.

by nssa.io1.0k installs47 stars

More from crawlora-org

Browse all skills

Researches products, prices, sellers, and reviews across major online marketplaces and big-box/specialty retailers (Amazon, eBay, Shopify stores, Shop.app, Target, Costco, Walmart, Nike, Zara, Adidas, Best Buy, Home Depot, Sephora, SHEIN, IKEA, Chewy, and more) using the Crawlora API, returning clean JSON. Use when the user asks to find a product, compare prices or sellers, track listings, or pull marketplace/retailer reviews — instead of scraping store pages.

by crawlora-org1 installs

Researches hotels, flights, attractions, short-term rentals, and live events via the Crawlora API — Booking.com, Expedia, Agoda, TripAdvisor, Trip.com, Airbnb, and Ticketmaster — returning clean JSON. Use when the user wants to search or compare hotel/stay prices and reviews, look up flight options, find attractions/things-to-do or concerts/events, or research an Airbnb host or listing.

by crawlora-org1 installs

Fetches any company's job openings straight from its Applicant Tracking System (ATS) via the Crawlora API — Greenhouse, Lever, Workday, Ashby, SmartRecruiters, Workable, Personio, Recruitee, iCIMS, Oracle Recruiting, Rippling, Pinpoint, Eightfold, Gem, UKG, and Teamtailor — returning clean JSON. Use when the user wants every open role from a specific company's ATS-hosted career page, a single job posting's full detail, or a hiring-velocity snapshot for a company, given its ATS platform and company/board slug.

by crawlora-org1 installs

Queries Crawlora's pre-built hosted datasets — Airbnb markets, App Store/Google Play apps, GitHub/Instagram/X users, job postings, US housing markets, Google Maps businesses, Goodreads, PitchBook, Steam, TrustMRR, Product Hunt, SEC companies, tech-stack, and more — via search/facets/item/nearby endpoints, returning clean JSON without live-crawling each platform. Use when the user wants bulk or aggregate analysis, to search a pre-indexed corpus, to facet/filter a large population, or to look up one record by its dataset id, instead of scraping pages one at a time.

by crawlora-org1 installs

Researches music, artists, playlists, and podcasts via the Crawlora API — Spotify tracks/albums/artists/playlists/profiles, Spotify Podcasts, Apple Podcasts, Discogs, and SoundCloud tracks/profiles/playlists — returning clean JSON. Use when the user wants a track/album/artist's details, a playlist or profile, podcast show/episode info and charts, a record's Discogs release/pressing data, or a SoundCloud track/user's stats.

by crawlora-org1 installs

Researches Zara's catalog — category taxonomy, category listings, product detail, keyword search, search suggestions, and nearby physical stores — using the Crawlora API, returning clean JSON. Use when the user asks to find a product on Zara, browse a Zara category, search Zara's catalog by keyword, pull a Zara product's colors/sizes/images, or find a nearby Zara store — instead of scraping zara.com.

by crawlora-org1 installs