What people build with restoapi data
Real scenarios with code snippets. Each example uses the public API + your rk_live_* key.
1. Price tracker — track a chain across 50 locations daily
Scenario: you sell a B2B SaaS to McDonald's franchisees. They want to know if competitor Burger King raised prices in their city.
Solution: nightly cron → POST all BK URLs as batch → compare with yesterday's run.
import requests, json, datetime, pathlib KEY = "rk_live_xxx" H = {"Authorization": f"Bearer {KEY}"} URLS = pathlib.Path("bk_locations.txt").read_text().splitlines() batch = requests.post("https://restoapi.org/v1/jobs/batch", headers=H, json={ "source_urls": URLS, "platform": "wolt", "export_type": "full_data", # cheaper, no photos "options": {"include_media": False}, }).json() # Each job_id polled in parallel; aggregate batch_id endpoint for sweep print(f"queued {batch['jobs_count']} jobs, total ${batch['total_charged_cents']/100:.2f}") today = datetime.date.today().isoformat() pathlib.Path(f"snapshots/{today}.json").write_text(json.dumps(batch))
Cost: 50 URLs × $0.07 (full_data with −30% no-media discount) = $3.50 per nightly run.
2. ML training set — labelled dish photos with allergens
You're training a model to classify food photos by allergen risk (contains-gluten, contains-dairy, vegan, etc).
restoapi gives you photos paired with prodinfo allergen tags — already labelled.
# Pick 1000 restaurants across categories, full_media tier for url in top_1000_urls: job = requests.post("https://restoapi.org/v1/jobs", headers=H, json={ "source_url": url, "platform": "wolt", "export_type": "full_media", }).json() # After completion: unzip, walk photos/menu_photos/ + match by hash to items # with .allergens_normalized = ['milk', 'wheat', 'egg', ...] # → instant labelled dataset
Total: 1000 × $0.15 = $150 for a curated multilingual photo dataset with allergens, nutrition labels, and item names in 3-5 languages each. Bright Data alone would cost more, with worse structure.
3. Telegram bot — allergen-friendly restaurant finder
User has a peanut allergy. Bot accepts location + dietary preference → returns nearby restaurants with no peanut allergens.
# When user searches, we already have data harvested via batch jobs def safe_for_peanut_allergy(restaurant_data): for item in restaurant_data["menu"]: allergens = item.get("computed", {}).get("derived", {}).get("allergens_normalized", []) if "peanut" in allergens: return False return True
Edge case handled: restaurants with no prodinfo data still have a bracket-fallback parser — we extract allergens from item descriptions like "Cake (Gluten, Eggs, Milk)".
4. Multilingual menu cards in your CRM
You run a tourism platform showing restaurants to visitors. A Russian tourist in Tbilisi should see menu in Russian; German tourist — in German.
def render_menu(restaurant_json, user_locale): items = [] for item in restaurant_json["menu"]: tr = item.get("translations", {}).get(user_locale) if tr: items.append({ "name": tr["name"], "desc": tr.get("description"), "price": item["pricing"]["formatted"], "photo": item["photo"]["local_url"], }) return items # Aroma Coffee Tbilisi serves menu in ka + en + ru + de + tr # All five are inside the archive. Pick one.
RTL languages (Hebrew, Arabic) work out of the box — strings are preserved as-is, your frontend handles direction with CSS direction: rtl;.
5. Catalog for SEO / shopping site
Build a public catalog like "best Wolt restaurants in Vienna" with proper schema.org markup.
The computed.flat namespace gives you 47 ready-to-use scalars:
{
"name": "Centrum Kitchen & Bar",
"country": "ISL", "city": "Akureyri", "currency": "ISK",
"primary_language": "is", "languages_count": 3,
"is_open": true, "phone": "+3546666078",
"items_count": 15, "items_popular": 5, "items_with_photo": 15,
"price_min": 500, "price_max": 3850, "price_avg": 2433,
"top_cuisines": ["other", "salad", "pasta"],
"top_allergens": [],
"tags": ["Burger", "Meat & fish", "Steak", "Mexican", "Salad"],
"slogan": "Framandi & fjölbreyttur matseðill...",
"logo_local_url": "photos/cover/abc123.jpg"
// + 30 more scalars
}
Map this directly to <Restaurant>, <Menu>, <MenuItem> schema.org types for rich Google snippets.
Got an idea we should feature?
If you build something cool with restoapi, we'd love to highlight it here. Drop us a line at support@restoapi.org.