Wolt Scraper
Pricing
Pay per event
Wolt Scraper
Retrieves restaurant information on wolt.com. Checks which restaurant websites are alive, and crawls them for emails and social links. Filters common telemetry and template junk.
0.0 (0)
Pricing
Pay per event
0
2
2
Last modified
3 days ago
An Apify Actor that scrapes restaurant listings and detail pages from wolt.com, then optionally crawls each restaurant’s own website to discover emails and social links.
It uses HTTPX for fetching and BeautifulSoup for parsing. Wolt listings are client-rendered; the scraper extracts all restaurant links present in the initial HTML. To extend coverage, provide multiple listing URLs.
Key Features
- Listing to detail workflow
- Start from listing pages like
https://wolt.com/en/nor/oslo/restaurants - Extract restaurant detail URLs such as
https://wolt.com/en/nor/oslo/restaurant/chaiwala-oslo
- Start from listing pages like
- Restaurant details
- name, address, phone, website
- emails (email1..n) and social profiles (facebook, instagram, linkedin, x, youtube, tiktok, pinterest)
- Same-domain contact crawl
- For restaurants with a website, visit a small number of pages (default 3) to find additional emails and socials
- Robust parsing
- Parse HTML, JSON-LD, and Next.js
__NEXT_DATA__for details
- Parse HTML, JSON-LD, and Next.js
Input Configuration
Defined in input_schema.json.
| Field | Type | Description |
|---|---|---|
start_urls | array | Wolt listing pages to start from |
max_results | integer | Total restaurants to save across all listings (0 = no cap) |
site_email_max_pages | integer | Pages to visit on the restaurant website to discover contacts/socials (default 3) |
timeout_seconds | integer | Per-request read timeout (default 30) |
Example:
{"start_urls": [{"url": "https://wolt.com/en/nor/oslo/restaurants"}],"max_results": 100,"site_email_max_pages": 3,"timeout_seconds": 30}
How It Works
- Enqueue listing URLs.
- For each listing, parse the initial HTML to collect restaurant detail links.
- For each restaurant detail page, extract core fields from JSON-LD, Next.js data, and visible HTML.
- If a website exists, check availability and crawl a few internal pages to find emails and social links.
- Push structured results to the default dataset.
Output Example
{"source_url": "https://wolt.com/en/nor/oslo/restaurant/chaiwala-oslo","name": "Chaiwala Oslo","address": "Examplegata 1, 0150 Oslo","phone": "+47 12 34 56 78","website": "https://example-restaurant.no","website_details": "ok","email1": "post@example-restaurant.no","social_facebook": "https://www.facebook.com/example","social_instagram": "n/a","social_linkedin": "n/a","social_x": "n/a","social_youtube": "n/a","social_tiktok": "n/a","social_pinterest": "n/a"}
Notes
- Wolt listings use infinite scroll; HTTP fetch collects what is present in the initial HTML. Provide multiple listing pages if you need broader coverage.
- Respect local laws and terms of service. Keep concurrency and request rates reasonable.
© 2025 SLSH. All rights reserved. Copying or modifying the source code is prohibited.
On this page
Share Actor:
