Sign up takes 30 seconds — $0.50 free on your account. Claim credit →
東京 · 2026 · LIVE

Every restaurant
as structured data.

One URL in — full restaurant snapshot out. Menu items, prices, photos, allergens, nutrition, translations across all available languages. No more scraping, no anti-bot games, no missing fields.

No card required · $0.50 free trial on signup · 48-hour archive · API + dashboard + Apify

Data from

Wolt — fully supported, 23 countries verified

Most complete Wolt scraper available. We extract full menu items with prices in any currency (including ISK/JPY/HUF/KZT formatted correctly), all available translations (up to 5 per restaurant), allergens and nutrition data from the hidden prodinfo endpoint, GTIN barcodes for packaged goods, photos archived locally, combo items with nested variant trees, RTL languages (Hebrew/Arabic) preserved.

Tested end-to-end across 23 markets: Estonia, Latvia, Lithuania, Finland, Sweden, Denmark, Iceland, Germany, Austria, Slovakia, Slovenia, Croatia, Hungary, Greece, Albania, Serbia, Kosovo, North Macedonia, Georgia, Armenia, Azerbaijan, Israel, Kazakhstan. Every currency edge case handled, every multilingual case verified.

Read full article →
{
  "platform":    "wolt",
  "countries":   23,
  "languages":   "all available, up to 5/restaurant",
  "allergens":   true,
  "nutrition":   true,
  "gtin":        true,
  "combos":      "nested tree with per-variant prodinfo",
  "rtl_support": true,
  "price":       "$0.03 – $0.15 per restaurant"
}

Google Maps — restaurant card + reviews + photos

Full restaurant card extraction from any Google Maps URL — name, address, phone, hours per day, coordinates, amenities, popular times graph, order-provider deep links. Up to 2000 reviews scrolled with full text (we expand "see more" automatically), per-review photos, owner replies. Photos categorised: cover, place, menu strip, review photos — all archived locally with hash de-duplication.

The Google Places API gives you 5 reviews and 10 photos. We give you everything you can see in a browser. Better data, no quota dance.

Read full article →
{
  "platform":      "googlemaps",
  "reviews_max":   2000,
  "photos_modes":  ["full", "menu_only", "skip"],
  "popular_times": true,
  "rating_breakdown": "1★ to 5★ histogram",
  "amenities":     "full list",
  "order_providers": "deep links to Uber Eats / Just Eat etc",
  "price":         "$0.03 – $0.15 per restaurant"
}

UberEats — coming next

UberEats support is in active development. We already have an UberEats parser in beta with the same canonical output shape as Wolt — menu items, photos, allergens (where exposed), translations, delivery options. Coverage will start with US/UK/EU markets and expand from there.

ETA: v1.1 release (Q3 2026). If you want early access for a specific integration, write to support@restoapi.org — early adopters get a free batch of test exports.

Request early access →
# UberEats status
status:        "beta — parser ready, launching v1.1"
canonical_compat: true   # same output shape as wolt
photos:        "all dish + venue"
batch_ready:   true
eta:           "Q3 2026"
early_access:  "by email"

Bolt Food — coming next

Bolt Food parser is in our test pipeline. Same canonical Restaurant + Dish model as the rest. Strong markets in Eastern Europe (Estonia, Latvia, Lithuania, Romania, Slovakia, Czech) and Africa (Kenya, South Africa, Nigeria) — places where Wolt isn't the dominant player. Useful for cross-platform price comparison in mixed markets.

Request early access →
# Bolt Food
markets:    "strong in EE / EU / Africa"
canonical:  "Restaurant + Dish compatible"
cross_compare: true
status:     "queued for v1.1"

DoorDash — coming next

DoorDash is the largest US food delivery platform. Our parser is ready in beta — restaurant card, menu items, prices, photos, hours, ratings, reviews. Launching with major US metros first (NYC, SF Bay, LA, Chicago, Boston, Seattle, Austin, Miami).

Request early access →
# DoorDash
market:      "US — largest by volume"
metros:      "NYC, SF, LA, Chicago, Boston ..."
reviews:     true
ratings:     true
status:      "beta, v1.1"

Yelp — coming next

Yelp is a different beast — light on structured menu data but very strong on reviews and photos. Our parser focuses on what Yelp is unique for: 100+ reviews with attached photos, business attributes (vegan-friendly, accepts crypto, has wheelchair access), hours per day, popular dishes (mentioned-in-reviews aggregation), and 30+ business photos archived. Great complement to our existing Wolt + Google Maps coverage.

Request early access →
# Yelp
strength:       "reviews + business attributes"
reviews_max:    100 +
popular_dishes: "aggregated from reviews"
attributes:     "vegan, wheelchair, crypto-payments, ..."
status:         "in queue"
Built for
Food-tech aggregators Market researchers ML training datasets Franchise monitoring Delivery integrators
Live numbers · updates in real time

By the numbers — what we're processing right now

998,429
Requests · May 2026
4.04 TB
Data delivered
40.11 M
Menu items parsed
10.30 M
Photos archived
23
Countries verified
15+
Currencies (ISK/JPY/KZT ✓)
99.4%
Job success rate
48h
Archive retention
Real data, real food

Inside every archive — photos this crisp

Every dish, every venue shot — downloaded at maximum resolution, archived locally, de-duplicated by content hash. No expiring URLs.

Sushi
Ramen bowl
Japanese food close-up
Asian food market
Modern restaurant interior
Build anything

One data source. Endless applications.

With every restaurant fully extracted — menu, allergens, nutrition, photos, translations — you can build practically any food-related product without ever touching a scraper yourself.

APPS

Food delivery clones

Launch your own Wolt-clone for a region they don't cover. Inventory ready on day one — restaurants, menus, photos, prices, allergens. No need to convince 100 restaurants to upload their data — it's already there.

AGGREGATORS

Restaurant aggregator sites

“Best burgers in Vienna”, “All vegan restaurants in Berlin”, “Late-night food in Reykjavík” — these directory sites usually take 6 months of manual data entry. With us: 6 hours.

ML & AI

Train food classification models

Labelled photo datasets paired with allergen tags, nutrition values, and category labels. Train dish classifiers, allergen detectors, nutrition estimators, image embedding models. Already labelled.

SEARCH

Food search engines

Drop our computed.searchable_text into Postgres tsvector, Meilisearch, or Elasticsearch. Instant multilingual full-text search across dish names, descriptions, ingredients — every language a restaurant exposes.

RECOMMENDATIONS

Personalised dish recommendations

Match user dietary profile (vegan / gluten-free / low-carb) against normalised allergens and nutrition. Build “you should try this” engines for delivery apps, fitness apps, hotel concierge bots.

HEALTH

Allergen-aware diet apps

“No peanuts, no shellfish, low gluten” → restaurants where every menu item passes the filter. Our allergens_normalized field is already translated to English keywords — works across any source language.

TOURISM

Tourism & travel platforms

Show menu in the visitor's language. Aroma Coffee in Tbilisi serves 5 languages — Russian tourist sees ru, German sees de. All five translations come from one API call.

ANALYTICS

Market intel & competitor tracking

Daily snapshots of competitor restaurants in your area. Track price changes, new menu launches, photo refreshes, popular badge churn. Your sales team wakes up to a digest.

BOTS

Restaurant chat & voice bots

Telegram / WhatsApp / Siri Shortcuts bots that take orders, suggest dishes, check opening hours, list allergens. The data structure is bot-ready: JSON in, natural language out.

Data model

Built on two clean concepts: Restaurant + Dish

Whatever you're building — food app, ML pipeline, search engine, analytics dashboard — the underlying data is the same: a restaurant with attributes, and menu items (dishes) belonging to it. Our canonical JSON reflects this cleanly so you can plug it into any backend.

Restaurant — the venue object

One restaurant.json per scraped URL. Has: name, slug, venue_id (stable), country, city, currency, primary_language, phone, full address, coordinates, slogan, tags, delivery methods + hours per day, min order, share URL, breadcrumbs.

Plus our computed.flat namespace — 47 scalars ready for direct SQL/CSV ingestion: items_count, items_popular, price_min/max/avg/median, top_cuisines[], top_allergens[], logo_local_url, etc.

Dish — the menu item

Every menu item has the same structure: local_id (stable), name, description, category, pricing (amount + currency + formatted), photo (URL + local archived path), popularity flag, age-restricted flag, discount fields, available-times window.

Plus enriched data: translations.{lang} for every available language, allergens + nutrition + gtin from prodinfo, options_groups for combos, and our computed fields derived.allergens_normalized, derived.food_category, derived.searchable_text.

Restaurant + Dish in one request

That's the whole API. One POST /v1/jobs with a URL → one ZIP containing one Restaurant + N Dishes, all photos, all translations. No need to combine endpoints, no pagination headaches, no missing fields. The data model fits cleanly into Restaurant.belongsTo(Dishes) in any ORM.

For developers

Need test data for your food app? You're in the right place.

Building a food-related product is famously held back by data scarcity. Free public datasets are stale, incomplete, or single-cuisine. Our $0.50 free trial gives you real, fresh, full restaurants as a fixture for your development & QA environments.

Realistic fixtures, not synthetic data

Generate restaurants on signup ($0.50 = ~3 Basic exports = ~50 dishes across 3 cities). Use them as test/fixtures/ in your CI. Real names, real prices, real photos, real allergens — your code tests on the same shape of data you'll see in production.

Seed your database in 10 minutes

Pick 30 restaurants in a city → batch them → import the ZIP into your Postgres / MongoDB. Your dev environment now has a fully-populated catalog: 30 restaurants × 15 dishes avg = 450 items with full multilingual + allergen data.

Train tiny models cheaply

$30 covers 200 full_media exports = 3000+ labelled photos across dozens of cuisines, allergen profiles, dietary preferences. Enough for fine-tuning vision models, building search indices, or benchmarking your recommendation engine.

Test multilingual / RTL / edge cases

Build a tourism app and need to test RTL display? Try an Israel restaurant (Hebrew). Need to test 5-language switching? Try Aroma Coffee Tbilisi (ka+en+ru+de+tr). Currency rendering bugs? ISK / KZT / JPY / HUF all covered. Realistic edge cases on day one.

Get your test data now — $0.50 free

No card · No commitment · Restaurant + Dish data in one ZIP

Why restoapi

Data so complete, there's no aftercare needed

Other scrapers give you name + price + address. We give you the whole thing — including the things nobody else extracts.

01 · MULTILINGUAL

Every translation, not just one

When a restaurant offers menu in en + sk + de + uk + ru — you get all five. Including auto-translated machine quirks (Wolt's Brownie → Lutin) mirrored 1:1.

02 · ALLERGENS & NUTRITION

Per-item allergens, GTIN, nutrition

We fetch prodinfo endpoints for every packaged-goods item: full allergens list, ingredients, nutritional table, barcode (GTIN), unit price, country of origin. Most scrapers don't even know this exists.

03 · COMBOS

Combo meals with nested variants

A combo of Burger + Side + Drink isn't one row — it's a tree. We unfold it: each variant has its own allergens, calories, price delta, translation.

04 · ZERO-DECIMAL CURRENCY

ISK / JPY / HUF / KZT formatted right

Wolt stores everything in minor units. For ISK that's still ISK (no öre). We auto-detect and render kr3,450 instead of kr34.50. 16 currencies handled by ISO 4217 spec.

05 · LOCAL MEDIA

Photos archived locally, not just linked

Every dish photo, restaurant cover, logo — all downloaded into the ZIP. Restaurant deletes the photo tomorrow? Doesn't matter, your archive still has it. De-duplicated by content hash.

06 · ASYNC + RECEIPT

Instant job ID + full pricing receipt

POST returns in <100ms with job_id + estimated time + complete billing breakdown (price, discount, charged, balance before/after, transaction ID). Log it on your side, reconcile easily.

Sample output

This is what one archive contains

Real data from a Wolt restaurant in Iceland — Centrum Kitchen Bar, Akureyri. Total ZIP: 11.3 MB. Parse time: 28 seconds.

📁 ZIP contents (11.3 MB)

  • result.json — full canonical (78 KB)
  • restaurant.json — card only (2 KB)
  • menu.json — items+categories (70 KB)
  • computed.json — flat catalog (3 KB)
  • summary.json — at-a-glance
  • photos/menu_photos/ — 15 dish photos
  • photos/venue_photos/ — 2 hero shots
  • metadata/manifest.json

Download is one signed URL, valid for 48 hours. ZIP is also accessible per-file via individual signed URLs if you only need menu.json.

// 1 of 15 items, full Wolt format
{
  "name": "Kjúklinga takkó",
  "description": "Mexican chicken taco...",
  "pricing": {
    "amount": 3450,
    "currency": "ISK",
    "formatted": "kr3450"
  },
  "category": { "name": "Mexican" },
  "photo": {
    "url": "https://imageproxy.wolt...",
    "local_url": "photos/menu_photos/3fb776fbc34f.jpg"
  },
  "translations": {
    "is": { "name": "Kjúklinga takkó" },
    "en": { "name": "Chicken taco" },
    "pl": { "name": "Taco z kurczakiem" }
  },
  "computed": {
    "flags": { "is_popular": true, "has_photo": true },
    "derived": {
      "food_category": "taco",
      "searchable_text": "Kjúklinga takkó | Mexican..."
    }
  }
}
How it works

From URL to archive in four steps

1

Send URL

POST to /v1/jobs with a restaurant link. Returns job_id instantly + your full billing receipt.

2

We crawl

Playwright + prodinfo + multi-language fetch. 3 minutes for basic, up to 12 for full_media.

3

You check

Poll /v1/jobs/{id}/status. When status=completed, signed download URLs appear in the response.

4

Download ZIP

One archive with everything inside. Valid 48 hours. Failed? Automatic refund, no questions asked.

# 1. Create a job
curl https://restoapi.org/v1/jobs \
  -H "Authorization: Bearer rk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "source_url": "https://wolt.com/en/aut/wien/restaurant/foo",
    "platform": "wolt",
    "export_type": "full_media"
  }'

# Response (instant)
{
  "job_id": "a46372ae04215404d1480d495026b906",
  "status": "queued",
  "billing": {
    "charged_cents": 15,
    "balance_after": 532,
    "transaction_id": 25
  },
  "timing": { "estimated_seconds": 600 }
}

# 2. Poll until ready
curl https://restoapi.org/v1/jobs/a463...906/status \
  -H "Authorization: Bearer rk_live_..."

# When status=completed → grab downloads.full_export_zip.url
Use cases

What people build with restoapi data

01 Food-tech aggregators

Compare prices across Wolt / UberEats / Glovo for the same restaurant. Our computed.flat namespace gives you 47 scalars per restaurant ready for SQL/CSV/dashboards. Match restaurants by phone, address or coords.

computed.flat price comparison CSV-ready

02 ML training datasets

15+ photos per restaurant with category labels (menu / venue / cover). Full allergen tags + nutrition per item — labelled training data for dietary classification, recommendation systems, food image recognition.

labelled photos allergens nutrition multilingual

03 Franchise monitoring

Set up nightly batch jobs to track a chain across 50 locations. Detect price changes, new dish launches, hours updates, photo refreshes. Webhook-trigger your alerts (coming in v2).

batch (200/run) diff tracking cron-friendly

04 Delivery integrators & bots

Build a Telegram bot that ranks restaurants by allergen-friendly options. Or a voice-assistant that orders from a menu. Our translations support every language Wolt exposes — Hebrew, Arabic (RTL), Georgian, all there.

RTL languages 5-lang restaurants raw JSON
Integrations

Also available on Apify Marketplace

Already using Apify Actors? restoapi is publishing a thin actor that proxies to our API — same data, same pricing, billed via Apify's Pay-Per-Event. Buy your API key here, paste into the actor, go.

Apify Actor

Thin wrapper around our API. Input: {api_key, platform, url, export_type}. Output: archive URL ready in Apify Dataset. Pay-Per-Event billing.

Coming soon →

Direct API

Native REST. Use from Python / Node / Go / cURL. Auth via session cookie or rk_live_* Bearer. Cheapest option — full margin to you.

API docs →

Vs. other scrapers

What you get here that you don't get elsewhere

Feature restoapi.org Generic Wolt scrapers DIY scraping
Restaurant card (name, address, phone, hours)
Menu items + prices ✓ (with work)
Multi-language menu translations (all available) ✓ All 5 langs UI lang only Hard to do
Allergens per item (from prodinfo endpoint) No Undocumented API
Nutrition table + GTIN + unit price No No
Combos with nested variant allergens ✓ Full tree Flat or skipped No
Photos archived locally (de-duplicated) ✓ in ZIP URLs only URLs only
Zero-decimal currency formatting (ISK/JPY/KZT) ✓ Correct Broken (10× off) Easy bug
Full billing receipt in response ✓ price+txn+balance Just charged N/A
Auto-refund on failed jobs Pay anyway N/A
48-hour archive + signed download URLs ✓ HMAC Public URLs N/A
Batch (1-200 URLs per call) Sometimes DIY

The unfair advantage

We've been polishing this parser for months. It's been verified across 23 countries: Iceland, Israel (RTL!), Georgia (5 languages), Kazakhstan (KZT), Albania, Estonia, Latvia, Slovenia… Currency edge-cases, RTL scripts, machine-translated names, missing fields, prodinfo retries — all handled.

You don't have to deal with any of that. You get the clean JSON.

Pricing

Pay only for what you ship

Pay-per-task. No subscription, no commitment. $0.50 free trial on signup. Failed jobs are auto-refunded.

Basic

$0.03
~30 seconds · ~5 MB
  • Restaurant card
  • Name, address, phone, hours
  • Coordinates
  • Cover image (1 photo)
  • No menu
  • No reviews
Try Basic →

Full data

$0.10
~3-5 minutes · ~5 MB JSON
  • Everything in Basic
  • Full menu (categories + items)
  • All translations
  • Allergens + nutrition
  • Reviews (googlemaps)
  • No photos archived
Try Full data →

include_media=false for −30% off any tier. Discounts auto-applied, breakdown returned in the billing block. Full pricing details →

FAQ

Things you might be wondering

How do I sign up?

Enter your email on /login, we send a 6-digit code, you enter it. No password, no card. $0.50 credit on first signup — enough for 3+ Basic tasks.

What if a job fails?

Automatic refund. Your transaction history shows the original charge AND the refund transaction with reason="job_failed". You never pay for broken data.

How fresh is the data?

Real-time. Every job hits Wolt/Google Maps live. We don't cache or pre-scrape — the moment you call, that's the snapshot you get.

Can I use this for many restaurants at once?

Yes — POST to /v1/jobs/batch with up to 200 URLs. Each becomes a separate job_id under one batch_id. Use /v1/batches/{id} for aggregate progress.

How long is the archive available?

48 hours from the moment the job completes. Signed download URLs include the expires timestamp. After that, re-run the task.

Which platforms are supported?

Today: Wolt (60+ countries, full multilingual) and Google Maps (any restaurant page). UberEats, Bolt Food, DoorDash coming next.

How do I top up?

Minimum top-up: $5. For now via bank transfer — write to support@restoapi.org. Stripe (cards) coming in v2.

What's an API key vs cookie session?

Cookie session = browser, 90-day sliding refresh. API key (rk_live_*) = for scripts/CI/Apify. Same permissions, same balance. Create as many keys as you want.

What about GDPR / privacy?

We store your email, session, and transaction history. No tracking pixels, no third-party analytics. Logout = session revoked. More on /about.

Is this legal?

Publicly accessible restaurant data, same as any browser request. We respect rate limits, don't bypass authentication, and process responsibly. Use the data responsibly on your end.

One URL → one ZIP. Try it now.

$0.50 free trial. No card required. Sign in with email, paste a Wolt link, download the archive in 28 seconds.

Start free