PedidosYa Scraper | Restaurants and Menu Prices avatar

PedidosYa Scraper | Restaurants and Menu Prices

Pricing

from $2.20 / 1,000 results

Go to Apify Store
PedidosYa Scraper | Restaurants and Menu Prices

PedidosYa Scraper | Restaurants and Menu Prices

Collect PedidosYa restaurant listings and optional menu prices from 15 Latin American country sites, including ratings, delivery fees and categories. Pay per delivered row plus a start fee.

Pricing

from $2.20 / 1,000 results

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

20

Total users

6

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

PedidosYa Scraper

Collect PedidosYa restaurant listings and optional menu prices from 15 Latin American country sites as rows you can export.

  • Restaurant names, ratings, delivery fees and categories.
  • Separate menu rows linked to their restaurant.
  • City, country, category and restaurant-URL discovery.
  • Lists filtered by category or chain name.
  • Pay only for the rows you receive: $3.00 per 1,000 rows on the Free plan plus a small start fee.

What does PedidosYa Scraper do?

PedidosYa Scraper collects public listings and menus from country sites such as pedidosya.cl, pedidosya.com.ar and pedidosya.com.pe. It is unofficial and is not affiliated with PedidosYa or Delivery Hero.

  • Listings: city, category and chain return restaurant rows.
  • Restaurant details: restaurant accepts a restaurant URL, ID or slug.
  • Several URLs: startUrls accepts city-list and restaurant addresses.
  • Discovery: discoverCities, discoverCountries, discoverCategories and discoverSitemap return navigation rows.
  • Menu rows: includeMenuItems and enrichMenus are off by default. Each added menu row is billed like any other row.

Markets: Argentina (ar), Bolivia (bo), Chile (cl), Costa Rica (cr), Dominican Republic (do), Ecuador (ec), El Salvador (sv), Guatemala (gt), Honduras (hn), Nicaragua (ni), Panama (pa), Paraguay (py), Peru (pe), Uruguay (uy) and Venezuela (ve). Availability varies by market; this list does not guarantee complete coverage.

What data can you extract from PedidosYa?

Fields vary by row type and page. Missing values can be empty or absent. Examples below illustrate the format, not a current offer.

Restaurant rows: rowType=restaurant

FieldDescriptionExample
idRestaurant row identifier51946
partnerIdPedidosYa restaurant identifier51946
nameRestaurant nameExample Restaurant
urlRestaurant pagehttps://www.pedidosya.cl/restaurantes/santiago/subway-51946-menu
marketCountry codecl
citySlugCity used in the addresssantiago
ratingListed rating4.5
ratingCountNumber of ratings120
deliveryPriceDelivery-price object, when availablenull
categoriesListed food categories["Pizza"]
businessStatusRestaurant opening state, not billing statusOPEN
leadPhonePublic restaurant phone, when available+1 555 0100
FieldDescriptionExample
productIdMenu product identifierexample-product
nameProduct nameExample sandwich
sectionMenu sectionSandwiches
finalPriceListed final price5990
originalPriceOriginal price, if shown6990
currencyPrice currencyCLP
restaurantIdParent restaurant identifier51946
restaurantNameParent restaurant nameExample Restaurant
restaurantUrlParent page addresshttps://www.pedidosya.cl/restaurantes/santiago/subway-51946-menu

Menu rows also copy the parent city, address and location when present.

City rows: rowType=city

FieldDescriptionExample
citySlugCity address segmentlima
nameCity labelLima
sourceIndicates page-derived or seeded discoverydiscover_cities_seed

Country rows: rowType=country

FieldDescriptionExample
marketCountry codepe
nameCountry labelPeru
urlCountry homepagehttps://www.pedidosya.com.pe/

Category rows: rowType=category

FieldDescriptionExample
categorySlugCategory filter valuepizza
nameCategory labelPizza

Restaurant-URL rows: rowType=sitemap_url

FieldDescriptionExample
urlDiscovered restaurant addresshttps://www.pedidosya.cl/restaurantes/santiago/subway-51946-menu
vendorSlugRestaurant address segmentsubway-51946-menu

How to scrape PedidosYa

  1. Open PedidosYa Scraper in Apify Console. A free Apify account is enough to try it.
  2. Choose market and fill one target, such as citySlug. Leave mode on auto.
  3. Set maxResults to 5.
  4. Click Start and wait for the run to finish.
  5. Open the dataset and download JSON, CSV or Excel, or read the rows through the API.

Empty input starts a Lima, Peru example run of at most 3 rows. Changing only the market uses that market's sample city. Normal row and start charges still apply.

City listings

Fill citySlug, such as lima. Use page and maxPages to control the listing pages considered.

Restaurant details

Fill restaurantUrl, or partnerId with the matching market, or vendorSlug with citySlug. Enable includeMenuItems for separate products; otherwise the output is restaurant rows.

Category listings

Fill categorySlug, such as pizza, and optionally citySlug. Without a city, the market's sample city is used.

Chain listings

Fill chainName and optionally citySlug. Matching uses restaurant names or addresses, not a complete chain registry. Use the spelling found on PedidosYa.

Start URLs

Fill startUrls with country-site listing or restaurant addresses. Each URL has its own maxResults limit.

Discover cities

Choose discoverCities and a market to get city slugs.

Discover countries

Choose discoverCountries to list country sites. No target is needed.

Discover categories

Choose discoverCategories, a market and optionally a city to get category labels and slugs.

Discover restaurant URLs

Choose discoverSitemap and a market. Rows contain addresses, not complete restaurant details.

What to fill in

FieldWhat to enterDefault
modeAutomatic selection or an explicit mode aboveauto
marketCountry codepe
citySlugCity from a PedidosYa addressEmpty; form example lima
restaurantUrlFull restaurant addressEmpty
partnerIdRestaurant IDEmpty
vendorSlugRestaurant address segment; also fill cityEmpty
categorySlugFood category such as pizzaEmpty
chainNameRestaurant chain nameEmpty
startUrlsList of country-site URLsEmpty
maxResultsMaximum rows per target, 1–50070; form example 3
includeMenuItemsInclude separate product rowsfalse
enrichMenusFetch products after listings; also enable includeMenuItemsfalse
maxEnrichMaximum restaurants enriched, 0–505
maxMenuItemsPerRestaurantMaximum products per restaurant, 0–20020
maxPagesMaximum listing pages, 1–501
pageFirst listing page, 1–2001
cursorPrevious RUN_SUMMARY.nextCursor objectEmpty
proxyCountryOptional two-letter access-country code; normally leave emptyFollows market

When mode=auto, the first target wins in this order: startUrls, restaurantUrl, partnerId, vendorSlug, chainName, categorySlug, citySlug. A city can accompany a restaurant, category or chain target.

City

{"market": "pe", "citySlug": "lima", "maxResults": 5}

Restaurant with products

{"market": "cl", "partnerId": "51946", "includeMenuItems": true, "maxResults": 5}

Category with menu enrichment

{"market": "pe", "citySlug": "lima", "categorySlug": "pizza", "includeMenuItems": true, "enrichMenus": true, "maxEnrich": 1, "maxResults": 5}

Chain

{"market": "ar", "citySlug": "buenos-aires", "chainName": "mcdonald", "maxResults": 5}

Start URLs

{"market": "uy", "startUrls": ["https://www.pedidosya.com.uy/restaurantes/montevideo"], "maxResults": 5}

Discover cities

{"mode": "discoverCities", "market": "uy", "maxResults": 5}

Discover countries

{"mode": "discoverCountries", "maxResults": 5}

Discover categories

{"mode": "discoverCategories", "market": "pe", "citySlug": "lima", "maxResults": 5}

Discover restaurant URLs

{"mode": "discoverSitemap", "market": "cl", "maxResults": 5}
  • maxItems and limit are aliases for maxResults. Other accepted aliases include city, locale, vendorCode and menuUrl.
  • Unknown fields alone do not fail a run. Close misspellings can be corrected; other unknown fields are ignored with a note.
  • Invalid targets stop before collection or row charges, with a message such as INVALID_INPUT: restaurantUrl must be a PedidosYa restaurant address. The start fee can still apply.
  • INPUT_REPORT in the run's key-value store records fields filled, corrected or ignored. INPUT_ECHO shows the resulting settings.
  • To continue, copy RUN_SUMMARY.nextCursor into cursor and keep the same target settings.

Output example

Illustrative restaurant row:

{
"rowType": "restaurant",
"itemType": "restaurant",
"id": "51946",
"partnerId": "51946",
"name": "Example Restaurant",
"market": "cl",
"citySlug": "santiago",
"url": "https://www.pedidosya.cl/restaurantes/santiago/subway-51946-menu",
"rating": 4.5,
"ratingCount": 120,
"deliveryPrice": null,
"categories": ["Sandwiches"],
"businessStatus": "OPEN"
}

You can export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table. JSON preserves nested values such as delivery-price objects.

Why use this PedidosYa scraper?

  • Pay per row. Only rows written to the dataset incur row charges.
  • Keep delivered rows. Rows already in the dataset remain available. A failed menu lookup can still leave restaurant rows in the result.
  • Clear input errors. Messages name the field and expected format.
  • Linked products. Menu rows carry their parent restaurant identifiers.
  • Several inputs. Collect multiple URLs in one run.
  • No proxy setup. You do not need to set up proxies.

How much does it cost to scrape PedidosYa?

The Actor uses pay-per-event pricing. The start event costs $0.005 per GB of memory, with a minimum of one event. At the default 512 MB, one start costs $0.005. Platform usage is included in these prices.

Apify planPrice per rowPrice per 1,000 rows
Free$0.003$3.00
Starter$0.003$3.00
Scale$0.0026$2.60
Business$0.0022$2.20
Platinum$0.002$2.00
Diamond$0.0016$1.60
  • maxResults applies to each URL; other modes have one target. Default 70; larger requests are collected in parts of at most 70 rows.
  • Restaurants, menu products and discovery rows all count. Menu rows share their target's limit.
  • Free-plan users are limited to 10 runs of this Actor and 200 rows per run.
  • The whole run is capped by Maximum cost per run (maxTotalChargeUsd in the API).

Example: three URLs delivering 5 rows each produce 15 rows. On the Free plan at 512 MB, one start plus those rows costs 15 × $0.003 + $0.005 = $0.050.

What happens when the run timeout is too short

A slow collection can pause the run automatically. It shows ABORTED with the message “Queued on the collection backend; this run will resume automatically when results are ready (about N s).”

When results are ready, the same run resumes, reports “Resumed: delivering N rows.”, writes to the same dataset and finishes as SUCCEEDED if delivery succeeds. Already delivered rows are skipped, so they are not delivered or charged twice. You do not need to restart it yourself.

This can happen at most 3 times per run. Keep the default 3600-second timeout to reduce pauses. This does not promise recovery from every failure or a manual stop.

Synchronous endpoints (run-sync, run-sync-get-dataset-items) wait at most 300 seconds and can return an empty dataset while a run is paused. For longer collections, start asynchronously and read the dataset after SUCCEEDED, or use an ACTOR.RUN.SUCCEEDED webhook.

Use with AI agents and the API

Apify MCP server (Claude, ChatGPT, Cursor, VS Code)

Add this Actor to a client supporting remote MCP servers:

https://mcp.apify.com?tools=lentic_clockss/pedidosya-scraper

Sign in with Apify through OAuth, or send Authorization: Bearer <YOUR_APIFY_TOKEN>. The tool returns run and dataset IDs; the agent can then read rows with get-dataset-items.

Clients without remote support can use npx @apify/actors-mcp-server --tools lentic_clockss/pedidosya-scraper with APIFY_TOKEN set.

Example prompt: “Get five PedidosYa restaurant rows for Lima, Peru. Use market pe, citySlug lima and maxResults 5; return names and ratings.”

Apify API

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("lentic_clockss/pedidosya-scraper").call(
run_input={"market": "pe", "citySlug": "lima", "maxResults": 5}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('lentic_clockss/pedidosya-scraper').call({
market: 'pe', citySlug: 'lima', maxResults: 5
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Over HTTP, send the JSON input to POST https://api.apify.com/v2/acts/lentic_clockss~pedidosya-scraper/runs with Authorization: Bearer <YOUR_APIFY_TOKEN>. After success, read GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json. If an SDK call returns a paused run, follow the timeout guidance above.

Integrations

Use the Actor's Integrations tab to connect results to Google Sheets, Make, Zapier, n8n, Slack, Airtable or your own webhook. Use Apify Schedules for recurring runs.

En español

Este Actor recopila restaurantes y precios de menús de los sitios nacionales de PedidosYa. Elige el país en market y escribe la ciudad en citySlug; para empezar, usa maxResults con un valor de 5. También puedes indicar una dirección en restaurantUrl. Si necesitas productos del menú, activa includeMenuItems: cada producto ocupa una fila y cuenta dentro del mismo límite que el restaurante. Se cobra por las filas entregadas, además de una pequeña tarifa de inicio. Puedes descargar los resultados en Excel, CSV o JSON. La disponibilidad cambia según el país y la página; los campos que no aparecen pueden quedar vacíos.

FAQ

This Actor targets public data. You are responsible for checking applicable site terms and data-protection law. Processing personal data requires a lawful basis; public visibility alone is not permission for every use.

Why did my run end as ABORTED?

Check the status message. If it says the run will resume automatically, wait for the same run to finish. Other aborts may be manual stops or failures; inspect the log rather than assuming automatic recovery.

How many results can I get?

Set 1–500 rows per target. Available listings, page limits, menu limits and your maximum cost may reduce the output. Free-plan runs stop at 200 rows.

Why are some fields empty?

Pages expose different details. Listings often lack full addresses, phones or menu prices. Optional fields may be empty or absent.

Are discovered cities and countries live availability checks?

No. City, country and category discovery can include predefined entries, identified by a source ending in _seed. Those rows are billed too; they do not prove that restaurants are currently available there.

Why did enabling menus return fewer restaurants?

Restaurant and menu rows share one limit. At maxResults=5, one restaurant plus four products uses all five rows. Enrichment also needs both menu switches enabled.

Can I use the global pedidosya.com address?

Use country-site addresses for restaurants. The global pedidosya.com country selector is for country discovery, not restaurant listings.

Is this an official PedidosYa product?

No. It is an independent scraper, not affiliated with PedidosYa or Delivery Hero.

Limitations

  • No checkout, payment, ordering or login-only Plus pricing.
  • Supported market codes do not guarantee every city or restaurant is accessible.
  • Default maxPages=1 is a limited listing sample, not a city census.
  • Discovery rows and URL lists are not guaranteed complete or current.
  • Menu products require explicit opt-in and sufficient row budget.
  • Manual stopping before delivery can leave no dataset rows; only delivered rows are available for export.
  • Prices and availability can change after collection.

More food delivery and grocery scrapers from the same publisher:

Browse all of our scrapers at apify.com/lentic_clockss.

Support

Found a problem or need another field? Open an issue in the Issues tab of this Actor's page and include the run ID and the input you used.