Efood Scraper - Greek Food Delivery Restaurants & Prices avatar

Efood Scraper - Greek Food Delivery Restaurants & Prices

Pricing

from $4.00 / 1,000 result scrapeds

Go to Apify Store
Efood Scraper - Greek Food Delivery Restaurants & Prices

Efood Scraper - Greek Food Delivery Restaurants & Prices

Scrape restaurants, ratings, delivery info, cuisines, and prices from efood.gr — Greece's largest food delivery platform with 20,000+ stores.

Pricing

from $4.00 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

a day ago

Last modified

Categories

Share

Efood Scraper - Restaurants & Delivery Data from Greece's #1 Food Platform

Extract restaurant data, ratings, delivery times, cuisines, pricing, and availability from efood.gr — Greece's dominant food delivery platform (Delivery Hero) with 20,000+ stores across 100+ cities.

What is Efood Scraper?

Efood Scraper collects structured restaurant and store data from efood.gr's public API. It returns detailed information for every restaurant available for delivery at a given location — including ratings, delivery time estimates, minimum order amounts, delivery fees, cuisine types, opening hours, offers, and full address data with coordinates.

Efood (e-food.gr) is Greece's largest food delivery service, owned by Delivery Hero. It dominates the Greek market with over 20,000 partner stores covering restaurants, supermarkets, pharmacies, and retail shops across 100+ cities. No other food delivery platform comes close in Greece.

No login or cookies required. This actor uses efood's public restaurant listing API.

Popular use cases:

  • Market research — Map the Greek food delivery landscape. Analyze restaurant density, cuisine distribution, and pricing by city or neighborhood.
  • Competitive intelligence — Track delivery fees, minimum orders, and ratings across competing restaurants in any Greek city.
  • Location analytics — Identify underserved areas, popular cuisines by neighborhood, and delivery coverage gaps.
  • Price monitoring — Monitor delivery costs, minimum order thresholds, and promotional offers across the platform.
  • Investment research — Analyze the Greek food delivery market for investment due diligence or franchise opportunities.

How to scrape Efood data

Option 1: Search by city name

Set location to any major Greek city. The scraper automatically resolves city names to coordinates.

Supported cities include: Athens, Thessaloniki, Heraklion, Patras, Larissa, Volos, Ioannina, Chania, Kavala, Rhodes, Corfu, Piraeus, Kalamata, Mykonos, Santorini, and 20+ more.

Option 2: Search by exact coordinates

Provide latitude and longitude for precise location control. This is useful for targeting specific neighborhoods or areas not in the built-in city list.

Option 3: Filter by cuisine or keyword

Add a searchQuery to filter by restaurant name or cuisine keyword (e.g., "pizza", "souvlaki", "McDonald's"). Use cuisineFilter for exact cuisine type matching (e.g., "Burgers", "Sushi", "Souvlakia").

Option 4: City-wide grid sweep

By default, efood returns the shops that deliver TO the given point — around 4,000 in central Athens. That is not the full city. Set coverage to city-wide and the scraper sweeps a grid of points across the whole metro area, querying each point and deduplicating by shop id. For Athens this finds roughly 7,800 unique shops instead of 4,100.

Built-in metro bounds cover Athens (including Piraeus) and Thessaloniki. Other known cities get a ~15 km box around the center, and custom coordinates get a ~10 km box. gridStepKm controls the grid density; the actor caps the sweep at 36 API calls and widens the step automatically when needed, with a small delay between calls.

Remember to raise maxResults (e.g. 20,000) in city-wide mode, otherwise the extra shops get cut off.

Option 5: Ratings breakdown per shop

Set includeRatings to true to fetch each shop's detailed ratings breakdown: per-attribute scores (quality, service, delivery speed) and thumbs up/down counts (flavor, portion size, value for money, order consistency). The data lands in a ratingsBreakdown field per shop.

This adds one API call per shop, so combine it with a sensible maxResults or a filter. Individual review texts (author, comment, date) are not public on efood — they require a logged-in user — so the breakdown is the deepest ratings data available without login.

Input parameters

FieldTypeDefaultDescription
searchQueryStringFilter restaurants by name, cuisine, or address keyword
locationStringAthensCity name (Athens, Thessaloniki, Heraklion, etc.)
latitudeNumberExact latitude (overrides location)
longitudeNumberExact longitude (overrides location)
coverageStringpointpoint = single location query, city-wide = grid sweep over the metro area
gridStepKmNumber2.5Grid spacing in km for city-wide mode (auto-widened to stay within 36 calls)
includeRatingsBooleanfalseFetch per-shop ratings breakdown (one extra call per shop)
cuisineFilterStringExact cuisine type filter (Pizza, Burgers, Sushi, etc.)
onlyOpenBooleanfalseOnly return currently open restaurants
maxResultsInteger100Maximum restaurants to return (up to 50,000)
proxyConfigurationObjectProxy settings (Greek residential recommended)

Tips:

  • The default location is Athens city center. Change it to target other Greek cities.
  • Efood returns ALL restaurants available for delivery at the given coordinates — this can be 1,000-4,000+ in large cities.
  • Use maxResults to limit output. Set it high (e.g., 10,000) for full city dumps.
  • The onlyOpen filter is time-dependent — results change based on when you run the scraper.
  • Cuisine names are in Greek on efood. Common ones: "Souvlakia" (souvlaki), "Pizza", "Burgers", "Sushi", "Ελληνική" (Greek), "Ασιατική" (Asian), "Ιταλική" (Italian).

What data does Efood Scraper extract?

Each restaurant includes:

FieldTypeExample
nameString"McDonald's"
efoodIdNumber1803651
cuisinesArray["Burgers"]
primaryCuisineString"Burgers"
ratingNumber4.7
reviewCountNumber10418
deliveryTimeMinNumber30
minimumOrderNumber0
deliveryCostNumber0
freeDeliveryBooleantrue
isOpenBooleantrue
hasPickupBooleanfalse
hasCashOnDeliveryBooleantrue
hasCreditCardBooleantrue
addressString"Ermou 2, Syntagma 10563"
streetString"Ermou 2"
areaString"Syntagma"
cityString"Athens"
postalCodeString"10563"
latitudeNumber37.9758
longitudeNumber23.7337
phoneString"+302113110700"
logoUrlStringRestaurant logo URL
coverUrlStringRestaurant cover image URL
chainNameString"McDonald's"
verticalString"food"
isNewBooleanfalse
hasOffersBooleantrue
offersArray["1+1 Deal"]
timetableObjectOpening hours by day
distanceNumber1041 (meters from search point)
slugString"/athina/mcdonald-s"
urlStringFull restaurant URL on efood.gr
ratingsBreakdownObjectPer-attribute scores + thumbs counts (only with includeRatings)
scrapedAtStringISO timestamp

With includeRatings enabled, ratingsBreakdown looks like this:

{
"averageRating": 4.7,
"totalRatings": 10635,
"attributeScores": [
{ "id": "quality", "label": "Ποιότητα", "score": 4.7 },
{ "id": "service", "label": "Εξυπηρέτηση", "score": 4.7 },
{ "id": "od_delivery_time", "label": "Ταχύτητα (delivered by efood)", "score": 4.9 }
],
"thumbs": [
{ "id": "flavor", "label": "Γεύση", "up": 1877, "down": 89 },
{ "id": "price_match", "label": "Σχέση ποιότητας - τιμής", "up": 1816, "down": 157 },
{ "id": "size", "label": "Μέγεθος μερίδας", "up": 1840, "down": 127 }
]
}

Example output

[
{
"name": "McDonald's",
"efoodId": 1803651,
"cuisines": ["Burgers"],
"primaryCuisine": "Burgers",
"rating": 4.7,
"reviewCount": 10418,
"deliveryTimeMin": 30,
"minimumOrder": 0,
"deliveryCost": 0,
"freeDelivery": true,
"isOpen": true,
"hasPickup": false,
"hasCashOnDelivery": true,
"hasCreditCard": true,
"address": "Ermou 2, Syntagma 10563",
"street": "Ermou 2",
"area": "Syntagma",
"city": "Athens",
"postalCode": "10563",
"latitude": 37.9758132,
"longitude": 23.7336797,
"phone": "+302113110700",
"chainName": "McDonald's",
"vertical": "food",
"isNew": false,
"hasOffers": true,
"offers": ["1+1 Deal"],
"timetable": {
"monday": "06:00-06:00",
"tuesday": "06:00-06:00",
"wednesday": "06:00-06:00",
"thursday": "06:00-06:00",
"friday": "06:00-06:00",
"saturday": "06:00-06:00",
"sunday": "06:00-06:00"
},
"distance": 1041,
"slug": "/athina/mcdonald-s",
"url": "https://www.e-food.gr/athina/mcdonald-s",
"scrapedAt": "2026-06-07T14:30:00.000Z"
},
{
"name": "Domino's Pizza",
"efoodId": 5707412,
"cuisines": ["Pizza", "Pasta"],
"primaryCuisine": "Pizza",
"rating": 4.6,
"reviewCount": 3842,
"deliveryTimeMin": 35,
"minimumOrder": 5,
"deliveryCost": 1.5,
"freeDelivery": false,
"isOpen": true,
"hasPickup": true,
"hasCashOnDelivery": true,
"hasCreditCard": true,
"address": "Stadiou 28, Athens 10564",
"street": "Stadiou 28",
"area": "Athens Center",
"city": "Athens",
"postalCode": "10564",
"latitude": 37.9795,
"longitude": 23.7312,
"phone": "+302103259000",
"chainName": "Domino's Pizza",
"vertical": "food",
"isNew": false,
"hasOffers": true,
"offers": ["Heineken Deals"],
"distance": 580,
"slug": "/athina/domino-s-pizza",
"url": "https://www.e-food.gr/athina/domino-s-pizza",
"scrapedAt": "2026-06-07T14:30:02.000Z"
}
]

How much does it cost?

Efood Scraper uses direct API calls (no browser needed), making it extremely fast and cheap.

ScenarioRestaurantsEstimated costTime
Single city center100~$0.005~5 sec
City center point (Athens)4,000+~$0.01~10 sec
City-wide sweep (Athens)7,800+~$0.02~2 min
Multiple cities10,000+~$0.05~3 min
Nationwide scan20,000+~$0.10~5 min

Point mode makes a single API call per location. City-wide mode makes up to 36 calls with a polite delay between them. The includeRatings option adds one call per shop.

Can I integrate?

Efood Scraper connects to the full Apify integration ecosystem:

  • Apify API — Trigger runs programmatically, stream results in real-time
  • Webhooks — Notify your systems when scraping completes
  • Google Sheets — Auto-export restaurant data for analysis
  • Zapier / Make — Build no-code automations with delivery data
  • Slack alerts — Get notified about new restaurants or rating changes
  • BigQuery / Snowflake — Stream to your data warehouse
  • Scheduled runs — Set up daily monitoring with Apify Schedules
  • Direct download — CSV, JSON, XML, or Excel export

Can I use it as an API?

Use Efood Scraper as a Greek restaurant data API.

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("studio-amba/efood-scraper").call(run_input={
"location": "Thessaloniki",
"cuisineFilter": "Souvlakia",
"maxResults": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
rating = item.get("rating", "N/A")
fee = item.get("deliveryCost", 0)
print(f"{item['name']}{rating}/5, delivery: EUR {fee}")

JavaScript

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("studio-amba/efood-scraper").call({
location: "Athens",
searchQuery: "pizza",
maxResults: 200,
});
const { items } = await client
.dataset(run.defaultDatasetId)
.listItems();
items.forEach((item) => {
const open = item.isOpen ? "OPEN" : "CLOSED";
console.log(`${item.name}${item.rating}/5 [${open}] ${item.cuisines.join(", ")}`);
});

FAQ

What cities does efood cover?

Efood operates in 100+ Greek cities. The scraper has built-in coordinates for 30+ major cities including Athens, Thessaloniki, Heraklion, Patras, Larissa, Volos, Ioannina, Chania, Rhodes, Corfu, Mykonos, and Santorini. For other locations, provide exact latitude/longitude coordinates.

Does efood only have restaurants?

No. Efood has expanded beyond food delivery to include supermarkets, pharmacies, pet shops, flower shops, and retail stores. The vertical field indicates the store type ("food", "grocery", etc.) and cuisines may include non-food categories like "Supermarket", "Pet shop", or "Pharmacy".

Why do some restaurants have 0 rating?

New restaurants on efood may not have accumulated enough ratings to display an average. The reviewCount field shows how many ratings exist. Restaurants with rating: null and reviewCount: 0 are typically new additions to the platform.

Can I get menu items and individual dish prices?

The current version extracts restaurant-level data (delivery info, ratings, cuisines, hours). Menu/catalog data requires authentication on efood's API. If menu scraping is critical for your use case, let us know.

Why does the city center query miss shops?

Efood's API returns the shops that deliver TO the given coordinates. A shop in a northern suburb that doesn't deliver to the city center never shows up in a center query. Use coverage: "city-wide" to sweep the whole metro area — in Athens this roughly doubles the unique shop count.

Can I get individual review texts?

No. Efood shows individual reviews (author, comment, date) only to logged-in users, and this actor deliberately works without login or cookies. What you can get is the public per-shop ratings breakdown via includeRatings: average rating, total count, per-attribute scores, and thumbs up/down counts.

What is the difference between searchQuery and cuisineFilter?

searchQuery is a fuzzy keyword search that matches against restaurant name, cuisine, address, and chain name. cuisineFilter matches the exact cuisine category as defined by efood (e.g., "Pizza", "Burgers", "Souvlakia"). Use cuisineFilter when you know the exact category, and searchQuery for broader searches.

Limitations

  • Menu data — Individual menu items and dish prices require authentication and are not currently available. The actor focuses on restaurant-level data.
  • Location precision — In point mode, results depend on the delivery radius from the given coordinates. Moving the point by a few kilometers may change which restaurants appear. Use city-wide mode when you need full metro coverage.
  • Review texts — Individual review texts are login-gated on efood. Only the aggregate ratings breakdown is available (see includeRatings).
  • Real-time availability — The isOpen field reflects the restaurant's status at scrape time. Availability changes throughout the day.
  • API rate limits — Efood may rate-limit aggressive scraping. The actor uses Greek residential proxies by default for reliability.
  • Delivery Hero changes — As part of Delivery Hero, efood's API may change without notice. We monitor and update the scraper to keep pace.

Other European delivery scrapers

Build a complete view of European food delivery with companion scrapers from our catalog. Check our Apify Store page for the full list of European scrapers.

Your feedback

If you notice data quality issues, missing fields, or broken runs, let us know through the Apify Console or GitHub. We actively monitor and update this scraper to maintain reliability.