Rappi Scraper: Colombia Restaurants, Menus & Prices API
Pricing
from $6.15 / 1,000 results
Rappi Scraper: Colombia Restaurants, Menus & Prices API
Scrape Rappi Colombia restaurants, stores and full menus. Extract store name, cuisine, rating, reviews, delivery time and fee, address, geo, promotions plus menu items with price, discount, description and image. Search by city, category or query. Export JSON, CSV, Excel.
Pricing
from $6.15 / 1,000 results
Rating
5.0
(1)
Developer
Scrapers Lat
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Rappi Scraper: Colombia Restaurants, Menus & Prices
The most complete Rappi scraper for Colombia. Extract restaurants and stores from Rappi with full menus, prices and discounts, ratings, delivery fees, promotions, opening hours and geo coordinates. A fast HTTP Rappi API alternative for food delivery data in Latin America, with filters for city, cuisine category, rating, free delivery, Rappi Prime and a free-text search query.
Ideal for restaurant price monitoring, menu and product catalogs, food delivery market research, competitor analysis and lead lists of restaurants in Bogota, Medellin, Cali and Barranquilla.
📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples
Table of contents
- What it does
- Keywords
- Quickstart
- Input reference
- Output reference
- Example output record
- Why this Rappi scraper
- Use cases
- Run via API and CLI
- Fetch results
- Billing and limits
- FAQ and troubleshooting
What it does
This actor opens the Rappi restaurant listing for the Colombian city you choose, applies your optional search query, cuisine category, rating, free-delivery and Rappi Prime filters, paginates through the matching stores, and writes one normalized record per store to the dataset. When menu enrichment is on, each store is enriched with its full menu (products with name, price, discounted price, description and image), weekly opening hours, payment methods and geo coordinates.
Delivery fees and prices are returned in COP, coordinates are captured for every store, and promotions are returned as structured objects. You can also pass a single store URL or store ID to scrape just that restaurant.
Coverage is Colombia (country: CO) across Bogota, Medellin, Cali and Barranquilla, the markets Rappi serves most reliably over HTTP.
Keywords
Rappi scraper, Rappi API, Rappi restaurants data, Rappi menu scraper, Rappi menu prices, food delivery data, food delivery scraper LatAm, Rappi Colombia, restaurant menu prices, delivery data, Rappi Bogota, Rappi Medellin, scraper de Rappi, datos de restaurantes Rappi, menus y precios de Rappi, datos de delivery, API de Rappi, restaurantes Rappi Colombia.
Quickstart
Open the actor, paste this into the input, and press Run. It returns stores in Bogota with full menus and hours.
{"country": "CO","city": "Bogotá","maxStores": 10,"withDetails": true,"query": "sushi"}
Set withDetails to false for faster listing-only runs without menus. Add category (for example Hamburguesa), minRating, freeDeliveryOnly or primeOnly to narrow the results. Only country is required.
Input reference
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
country | enum | yes | CO | Rappi country to scrape. Currently CO (Colombia). Sets the domain, language and proxy country. |
city | enum | no | Bogotá | City within Colombia: Bogotá, Medellín, Cali, or Barranquilla. |
query | string | no | (empty) | Free-text search matched against each store name, brand and cuisine tags, for example sushi, mcdonalds, vegano. |
category | string | no | (any) | Filter stores by cuisine category name, for example Hamburguesa, Pizza, Sushi, Pollo, Saludable, Desayunos. |
minRating | number | no | (any) | Only return stores with a rating at or above this value (0 to 5), for example 4.5. |
freeDeliveryOnly | boolean | no | false | Only return stores with a $0 delivery fee. |
primeOnly | boolean | no | false | Only return stores advertising a Rappi Prime / prime-exclusive offer. |
maxStores | integer | no | 10 | Maximum number of stores to collect. |
withDetails | boolean | no | true | Enrich each store with its full menu, hours, payment methods and geo. Paid plans only. |
startUrl | string | no | (empty) | A single Rappi store page URL or a bare numeric store ID. When set, only that store is scraped. |
Filters combine with logical AND.
Output reference
One dataset item per store. Types: string, integer, number, boolean, object[], or null when the source value is absent.
| Field | Type | Description |
|---|---|---|
imageUrl | string | Store logo image URL. |
name | string | Store display name. |
url | string | Canonical store page URL on rappi.com.co. |
storeId | string | Rappi store ID (unique per store). |
brandName | string | Brand name of the store. |
brandId | string | Brand ID. |
superStoreId | string | Parent super-store ID. |
storeType | string | Store type, for example restaurant. |
partnerType | string | Partner type, for example restaurant. |
tier | string | Store tier, for example standard. |
category | string | Comma-separated cuisine category tags. |
rating | number | Store rating, 0 to 5, or null. |
reviewCount | integer | Number of customer reviews. |
rappiScore | number | Internal Rappi quality score, or null. |
deliveryTime | string | Human-readable delivery estimate, for example 29 min. |
etaMinutes | integer | Delivery estimate in minutes. |
deliveryFee | integer | Delivery fee in COP. |
deliveryMethods | string[] | Available delivery methods, for example ["delivery", "pickup"]. |
promoLabel | string | Short promotion label shown on the card, or null. |
promotions | object[] | Structured promotions (type, label, title, value, prime flag, min amount, expiry). |
isMarketplace | boolean | Whether the store is a Rappi marketplace store. |
isNew | boolean | Whether the store is flagged as new. |
topPerformer | boolean | Whether the store is flagged as a top performer. |
recommended | boolean | Whether the store is recommended. |
hasVouchers | boolean | Whether vouchers are available. |
hasBioPackaging | boolean | Whether the store uses eco-friendly packaging. |
address | string | Store address. |
detailAddress | string | Detailed store address (from the store detail), or null. |
city | string | City name. |
country | string | Country name. |
status | string | Store status, for example OPEN. |
isOpen | boolean | Whether the store is currently open. |
openSoon | boolean | Whether the store opens soon. |
openTimeToday | string | Today opening time, or null. |
closeTimeToday | string | Today closing time, or null. |
isExclusive | boolean | Whether the store is a Rappi exclusive. |
backgroundImage | string | Store banner image URL. |
currencyCode | string | Currency of monetary fields. COP for Colombia. |
minimumOrderValue | integer | Minimum order value in COP, or null. |
distanceMeters | integer | Distance to the store in meters, or null. |
freeDelivery | boolean | Whether delivery is currently free. |
storeLat | number | Store latitude, or null. |
storeLng | number | Store longitude, or null. |
serviceFeePercentage | number | Service fee percentage, or null. |
hasPickup | boolean | Whether in-store pickup is available. |
paymentMethods | string[] | Accepted payment methods, or null. |
dietaryRestrictions | object[] | Dietary restriction tags, or null. |
productCount | integer | Number of products in the menu (with details on). |
hours | object[] | Weekly opening hours (day, open, close) with details on. |
menu | object[] | Full menu with details on. See fields below. |
observedAt | string | ISO 8601 timestamp of when the record was collected. |
error | string | null on success. On a failed run a single item with a populated error is written. |
Each menu item has: name, category, productId, productCategoryId, price, realPrice, minimumPrice, discountPercentage, hasDiscount, available, isPopular, unitsSold, hasModifiers, hasUpsell, dietaryTags, description, image, and modifiers (option/topping groups with option SKUs and prices) when Rappi exposes them.
Example output record
Real record from a live run (input {"country":"CO","city":"Bogotá","query":"sushi","maxStores":2,"withDetails":true}). The menu array is trimmed to 1 of 39 real items for readability; the live record contains the full menu.
{"imageUrl": "https://images.rappi.com/restaurants_logo/900176455_1631558746119.png","name": "Xibo - Avenida Chile","url": "https://www.rappi.com.co/restaurantes/delivery/900176455-xibo","storeId": "900176455","brandName": "Xibo","brandId": "8145","superStoreId": "900176452","storeType": "restaurant","partnerType": "restaurant","tier": "standard","category": "Sushi, Pescados y Mariscos","rating": 4.7,"reviewCount": 320,"rappiScore": 92,"deliveryTime": "45 min","etaMinutes": 45,"deliveryFee": 4500,"deliveryMethods": ["delivery", "pickup"],"promoLabel": "Hasta 18% Off","promotions": [{"type": "offer_by_product","label": "Hasta 18% Off","title": "Exclusivo Pro 18 % Off Bowl Pollo Naranja","value": 18,"isPrimeExclusive": true,"minAmount": null,"expiresAt": "2027-06-13 00:00:00"}],"address": "Cl 72 #10-34 Local 410A, Centro Comercial Avenida Chile, Bogotá","city": "Bogotá","country": "Colombia","status": "OPEN","isOpen": true,"openTimeToday": "00:00:00","closeTimeToday": "23:59:00","isExclusive": true,"currencyCode": "COP","distanceMeters": 0,"freeDelivery": false,"storeLat": 4.6570332,"storeLng": -74.0576691,"hasPickup": true,"productCount": 39,"hours": [{ "day": "fri", "open": "00:00:00", "close": "23:59:00" }],"menu": [{"name": "Combo 20 bocados de Locura","category": "Promos","productId": "4908038","productCategoryId": "336004","price": 68600,"realPrice": 68600,"minimumPrice": null,"discountPercentage": 12,"hasDiscount": false,"available": true,"isPopular": true,"unitsSold": 140,"hasModifiers": true,"hasUpsell": false,"dietaryTags": null,"description": "5 bocados Camarón Dinamita + 5 bocados Salmón Apanado + 10 bocados California.","image": "https://images.rappi.com/products/example.jpeg"}],"observedAt": "2026-09-04T06:58:54.756Z","error": null}
Why this Rappi scraper
- Strict superset of other Rappi scrapers. Accepts every input other actors take (country, city, search query, store URL or ID, category, max results) and returns every field they return plus extras.
- Extra fields you will not find elsewhere: structured promotions with expiry and Prime flags, menu modifier and topping groups with option SKUs and prices,
rappiScore,serviceFeePercentage,paymentMethods,hasPickup,hasBioPackaging,hasVouchers,superStoreId,openTimeTodayandcloseTimeToday, plus product popularity (isPopular,unitsSold). - Real coordinates on every store, even on fast listing-only runs.
- Honest nulls. Missing source values are returned as
null, never invented. - Reliable HTTP transport with a Colombia-matched residential proxy, no headless browser, no charge on failure.
Use cases
- Track restaurant and product menu prices and discounts over time.
- Build a food delivery dataset of restaurants, cuisines, ratings and delivery fees.
- Monitor promotions and Rappi Prime exclusive offers across a city.
- Competitor menu and pricing analysis for restaurants and dark kitchens.
- Lead lists of restaurants with address, geo, delivery methods and contact-ready store pages.
Run via API and CLI
Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.
Run synchronously and get dataset items in one call:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~rappi-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"country":"CO","city":"Bogotá","maxStores":25,"withDetails":true}'
Start a run asynchronously:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~rappi-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"country":"CO","city":"Medellín","query":"hamburguesa","minRating":4.5,"maxStores":50}'
Apify CLI:
apify call scrapers_lat/rappi-scraper \--input '{"country":"CO","startUrl":"https://www.rappi.com.co/restaurantes/delivery/900176455-xibo"}'
Fetch results
Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginate large datasetscurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=500&limit=500"
<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.
Billing and limits
- Pay per result. You are charged per store record returned (the
resultevent). Menu enrichment adds adetailsevent on top, charged only when the menu is actually fetched. See the pricing tab. - No charge on failure. If a run errors, the actor writes a single item with a populated
errorfield and does not charge. Empty runs cost nothing. - Spend cap respected. Set
maxTotalChargeUsdon the run; once reached, the actor stops emitting and charging further billable results. - Free Apify plans are capped at 10 stores per run and return listing-only records. Menu enrichment (
withDetails) is a paid add-on. Upgrade for full menus and highermaxStores. - Menu enrichment is slower. With
withDetailson, each store is fetched individually. Turn it off for faster listing-only runs.
FAQ and troubleshooting
A run returned 0 records. Why?
The filter combination matched no stores in that city. Loosen the filters (remove query or category, lower minRating, or turn off freeDeliveryOnly / primeOnly). Zero-result runs are not charged.
Which cities and countries are supported?
Colombia (country: CO) across Bogota, Medellin, Cali and Barranquilla. These are the markets Rappi serves most reliably over HTTP.
How do I scrape a single restaurant?
Pass its store page URL or bare store ID in startUrl. Only that store is scraped, with its full menu when withDetails is on.
Why are some prices or fields null?
Not every store reports a minimum order value, distance, service fee or payment methods, and some menu items have no discount. Missing source values are returned as null, never invented.
Can I get menus without opening hours, or vice versa?
Both come together when withDetails is on. Set withDetails to false to return only listing-level fields.
Is this an official Rappi tool? No. This actor is independent and has no affiliation with Rappi. It reads only data that is publicly available on rappi.com.co.
Related scrapers
- Adondevivir Peru Real Estate Scraper: Peru property listings for sale and rent.
- QuintoAndar Brazil Real Estate Scraper: Brazil real-estate listings for rent and sale.
- MercadoLibre Scraper: MercadoLibre product listings across Latin America.
More scrapers at scrapers.lat
Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.
Rappi Scraper: Restaurantes, Menus y Precios de Colombia
El scraper de Rappi mas completo para Colombia. Extrae restaurantes y tiendas de Rappi con menus, precios y descuentos completos, calificaciones, costos de envio, promociones, horarios y coordenadas. Una alternativa rapida de API de Rappi para obtener datos de delivery en America Latina, con filtros por ciudad, categoria de cocina, calificacion, envio gratis, Rappi Prime y una busqueda de texto libre.
Ideal para el monitoreo de precios de restaurantes, catalogos de menus y productos, investigacion de mercado de delivery, analisis de competidores y listas de restaurantes en Bogota, Medellin, Cali y Barranquilla.
📥 Entrada · 📤 Salida · 💰 Precios · ▶️ Ejemplos
Tabla de contenido
- Que hace
- Palabras clave
- Inicio rapido
- Referencia de entrada
- Referencia de salida
- Ejemplo de registro de salida
- Por que este scraper de Rappi
- Casos de uso
- Ejecutar via API y CLI
- Obtener resultados
- Facturacion y limites
- Preguntas frecuentes
Que hace
Este actor abre el listado de restaurantes de Rappi para la ciudad de Colombia que elijas, aplica tu busqueda de texto y tus filtros opcionales de categoria de cocina, calificacion, envio gratis y Rappi Prime, recorre las tiendas que coinciden y escribe un registro normalizado por tienda en el dataset. Cuando el enriquecimiento de menu esta activo, cada tienda se enriquece con su menu completo (productos con nombre, precio, precio con descuento, descripcion e imagen), horarios semanales, metodos de pago y coordenadas.
Los costos de envio y los precios se devuelven en COP, se capturan coordenadas para cada tienda y las promociones se devuelven como objetos estructurados. Tambien puedes pasar la URL o el ID de una tienda para extraer solo ese restaurante.
La cobertura es Colombia (country: CO) en Bogota, Medellin, Cali y Barranquilla, los mercados que Rappi sirve de forma mas confiable por HTTP.
Palabras clave
scraper de Rappi, API de Rappi, datos de restaurantes Rappi, scraper de menus de Rappi, precios de menu de Rappi, datos de delivery, scraper de delivery LatAm, Rappi Colombia, precios de menu de restaurante, datos de reparto, Rappi Bogota, Rappi Medellin, Rappi scraper, Rappi API, Rappi restaurants data, Rappi menu prices, food delivery data.
Inicio rapido
Abre el actor, pega esto en la entrada y presiona Ejecutar. Devuelve tiendas en Bogota con menus y horarios completos.
{"country": "CO","city": "Bogotá","maxStores": 10,"withDetails": true,"query": "sushi"}
Pon withDetails en false para ejecuciones mas rapidas solo de listado, sin menus. Agrega category (por ejemplo Hamburguesa), minRating, freeDeliveryOnly o primeOnly para acotar los resultados. Solo country es obligatorio.
Referencia de entrada
| Campo | Tipo | Obligatorio | Predeterminado | Descripcion |
|---|---|---|---|---|
country | enum | si | CO | Pais de Rappi a extraer. Actualmente CO (Colombia). Define el dominio, el idioma y el pais del proxy. |
city | enum | no | Bogotá | Ciudad dentro de Colombia: Bogotá, Medellín, Cali o Barranquilla. |
query | string | no | (vacio) | Busqueda de texto libre contra el nombre, la marca y las etiquetas de cocina de cada tienda, por ejemplo sushi, mcdonalds, vegano. |
category | string | no | (cualquiera) | Filtra tiendas por categoria de cocina, por ejemplo Hamburguesa, Pizza, Sushi, Pollo, Saludable, Desayunos. |
minRating | number | no | (cualquiera) | Solo devuelve tiendas con una calificacion igual o superior a este valor (0 a 5), por ejemplo 4.5. |
freeDeliveryOnly | boolean | no | false | Solo devuelve tiendas con costo de envio de $0. |
primeOnly | boolean | no | false | Solo devuelve tiendas que anuncian una oferta Rappi Prime o exclusiva de Prime. |
maxStores | integer | no | 10 | Numero maximo de tiendas a recolectar. |
withDetails | boolean | no | true | Enriquece cada tienda con su menu completo, horarios, metodos de pago y geo. Solo planes pagos. |
startUrl | string | no | (vacio) | La URL de una tienda de Rappi o un ID numerico de tienda. Si se define, solo se extrae esa tienda. |
Los filtros se combinan con logica AND.
Referencia de salida
Un elemento del dataset por tienda. Tipos: string, integer, number, boolean, object[], o null cuando el valor de origen no existe.
| Campo | Tipo | Descripcion |
|---|---|---|
imageUrl | string | URL del logo de la tienda. |
name | string | Nombre de la tienda. |
url | string | URL canonica de la tienda en rappi.com.co. |
storeId | string | ID de tienda de Rappi (unico por tienda). |
brandName | string | Nombre de la marca de la tienda. |
brandId | string | ID de la marca. |
superStoreId | string | ID de la super-tienda padre. |
storeType | string | Tipo de tienda, por ejemplo restaurant. |
partnerType | string | Tipo de socio, por ejemplo restaurant. |
tier | string | Nivel de la tienda, por ejemplo standard. |
category | string | Etiquetas de categoria de cocina separadas por comas. |
rating | number | Calificacion de la tienda, 0 a 5, o null. |
reviewCount | integer | Numero de resenas de clientes. |
rappiScore | number | Puntaje interno de calidad de Rappi, o null. |
deliveryTime | string | Estimacion de entrega legible, por ejemplo 29 min. |
etaMinutes | integer | Estimacion de entrega en minutos. |
deliveryFee | integer | Costo de envio en COP. |
deliveryMethods | string[] | Metodos de entrega disponibles, por ejemplo ["delivery", "pickup"]. |
promoLabel | string | Etiqueta corta de promocion en la tarjeta, o null. |
promotions | object[] | Promociones estructuradas (tipo, etiqueta, titulo, valor, indicador Prime, monto minimo, vencimiento). |
isMarketplace | boolean | Si la tienda es un marketplace de Rappi. |
isNew | boolean | Si la tienda esta marcada como nueva. |
topPerformer | boolean | Si la tienda esta marcada como destacada. |
recommended | boolean | Si la tienda esta recomendada. |
hasVouchers | boolean | Si hay cupones disponibles. |
hasBioPackaging | boolean | Si la tienda usa empaque ecologico. |
address | string | Direccion de la tienda. |
detailAddress | string | Direccion detallada (desde el detalle de la tienda), o null. |
city | string | Nombre de la ciudad. |
country | string | Nombre del pais. |
status | string | Estado de la tienda, por ejemplo OPEN. |
isOpen | boolean | Si la tienda esta abierta actualmente. |
openSoon | boolean | Si la tienda abre pronto. |
openTimeToday | string | Hora de apertura de hoy, o null. |
closeTimeToday | string | Hora de cierre de hoy, o null. |
isExclusive | boolean | Si la tienda es exclusiva de Rappi. |
backgroundImage | string | URL de la imagen de banner de la tienda. |
currencyCode | string | Moneda de los campos monetarios. COP para Colombia. |
minimumOrderValue | integer | Pedido minimo en COP, o null. |
distanceMeters | integer | Distancia a la tienda en metros, o null. |
freeDelivery | boolean | Si el envio es gratis actualmente. |
storeLat | number | Latitud de la tienda, o null. |
storeLng | number | Longitud de la tienda, o null. |
serviceFeePercentage | number | Porcentaje de tarifa de servicio, o null. |
hasPickup | boolean | Si hay recogida en tienda disponible. |
paymentMethods | string[] | Metodos de pago aceptados, o null. |
dietaryRestrictions | object[] | Etiquetas de restricciones dieteticas, o null. |
productCount | integer | Numero de productos del menu (con detalles activados). |
hours | object[] | Horarios semanales (dia, apertura, cierre) con detalles activados. |
menu | object[] | Menu completo con detalles activados. Ver campos abajo. |
observedAt | string | Marca de tiempo ISO 8601 de cuando se recolecto el registro. |
error | string | null en exito. En una ejecucion fallida se escribe un unico elemento con error. |
Cada elemento de menu tiene: name, category, productId, productCategoryId, price, realPrice, minimumPrice, discountPercentage, hasDiscount, available, isPopular, unitsSold, hasModifiers, hasUpsell, dietaryTags, description, image, y modifiers (grupos de opciones o toppings con SKU y precios) cuando Rappi los expone.
Ejemplo de registro de salida
Registro real de una ejecucion en vivo (entrada {"country":"CO","city":"Bogotá","query":"sushi","maxStores":2,"withDetails":true}). El arreglo menu esta recortado a 1 de 39 elementos reales para legibilidad; el registro en vivo contiene el menu completo.
{"imageUrl": "https://images.rappi.com/restaurants_logo/900176455_1631558746119.png","name": "Xibo - Avenida Chile","url": "https://www.rappi.com.co/restaurantes/delivery/900176455-xibo","storeId": "900176455","brandName": "Xibo","brandId": "8145","superStoreId": "900176452","storeType": "restaurant","partnerType": "restaurant","tier": "standard","category": "Sushi, Pescados y Mariscos","rating": 4.7,"reviewCount": 320,"rappiScore": 92,"deliveryTime": "45 min","etaMinutes": 45,"deliveryFee": 4500,"deliveryMethods": ["delivery", "pickup"],"promoLabel": "Hasta 18% Off","promotions": [{"type": "offer_by_product","label": "Hasta 18% Off","title": "Exclusivo Pro 18 % Off Bowl Pollo Naranja","value": 18,"isPrimeExclusive": true,"minAmount": null,"expiresAt": "2027-06-13 00:00:00"}],"address": "Cl 72 #10-34 Local 410A, Centro Comercial Avenida Chile, Bogotá","city": "Bogotá","country": "Colombia","status": "OPEN","isOpen": true,"openTimeToday": "00:00:00","closeTimeToday": "23:59:00","isExclusive": true,"currencyCode": "COP","distanceMeters": 0,"freeDelivery": false,"storeLat": 4.6570332,"storeLng": -74.0576691,"hasPickup": true,"productCount": 39,"hours": [{ "day": "fri", "open": "00:00:00", "close": "23:59:00" }],"menu": [{"name": "Combo 20 bocados de Locura","category": "Promos","productId": "4908038","productCategoryId": "336004","price": 68600,"realPrice": 68600,"minimumPrice": null,"discountPercentage": 12,"hasDiscount": false,"available": true,"isPopular": true,"unitsSold": 140,"hasModifiers": true,"hasUpsell": false,"dietaryTags": null,"description": "5 bocados Camarón Dinamita + 5 bocados Salmón Apanado + 10 bocados California.","image": "https://images.rappi.com/products/example.jpeg"}],"observedAt": "2026-09-04T06:58:54.756Z","error": null}
Por que este scraper de Rappi
- Superconjunto estricto de otros scrapers de Rappi. Acepta toda entrada que aceptan otros actores (pais, ciudad, busqueda, URL o ID de tienda, categoria, maximo de resultados) y devuelve todos sus campos mas extras.
- Campos extra que no encontraras en otros: promociones estructuradas con vencimiento e indicadores Prime, grupos de opciones y toppings del menu con SKU y precios,
rappiScore,serviceFeePercentage,paymentMethods,hasPickup,hasBioPackaging,hasVouchers,superStoreId,openTimeTodayycloseTimeToday, y popularidad de productos (isPopular,unitsSold). - Coordenadas reales en cada tienda, incluso en ejecuciones rapidas solo de listado.
- Nulos honestos. Los valores de origen ausentes se devuelven como
null, nunca inventados. - Transporte HTTP confiable con un proxy residencial de Colombia, sin navegador headless y sin cobro por fallas.
Casos de uso
- Seguir precios y descuentos de menu de restaurantes y productos en el tiempo.
- Construir un dataset de delivery de restaurantes, cocinas, calificaciones y costos de envio.
- Monitorear promociones y ofertas exclusivas de Rappi Prime en una ciudad.
- Analisis de menu y precios de competidores para restaurantes y dark kitchens.
- Listas de restaurantes con direccion, geo, metodos de entrega y paginas de tienda.
Ejecutar via API y CLI
Inicia una ejecucion y espera a que termine, luego lee el dataset. Reemplaza <TOKEN> con tu token de API de Apify.
Ejecuta de forma sincrona y obten los elementos del dataset en una sola llamada:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~rappi-scraper/run-sync-get-dataset-items?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"country":"CO","city":"Bogotá","maxStores":25,"withDetails":true}'
Inicia una ejecucion de forma asincrona:
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~rappi-scraper/runs?token=<TOKEN>" \-H "Content-Type: application/json" \-d '{"country":"CO","city":"Medellín","query":"hamburguesa","minRating":4.5,"maxStores":50}'
Apify CLI:
apify call scrapers_lat/rappi-scraper \--input '{"country":"CO","startUrl":"https://www.rappi.com.co/restaurantes/delivery/900176455-xibo"}'
Obtener resultados
Cada ejecucion escribe en un dataset. Obten los elementos como JSON, CSV o Excel cambiando format:
# JSONcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"# CSVcurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"# Paginar datasets grandescurl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=500&limit=500"
<DATASET_ID> se devuelve como defaultDatasetId en el objeto de la ejecucion. Usa offset y limit para paginar resultados grandes. clean=true elimina campos vacios e internos.
Facturacion y limites
- Pago por resultado. Se cobra por registro de tienda devuelto (el evento
result). El enriquecimiento de menu agrega un eventodetailsencima, cobrado solo cuando el menu se obtiene realmente. Ver la pestana de precios. - Sin cobro por fallas. Si una ejecucion falla, el actor escribe un unico elemento con
errory no cobra. Las ejecuciones vacias no cuestan nada. - Se respeta el limite de gasto. Define
maxTotalChargeUsden la ejecucion; al alcanzarlo, el actor deja de emitir y cobrar mas resultados. - Planes gratuitos de Apify estan limitados a 10 tiendas por ejecucion y devuelven registros solo de listado. El enriquecimiento de menu (
withDetails) es un complemento pago. Mejora tu plan para menus completos y unmaxStoresmayor. - El enriquecimiento de menu es mas lento. Con
withDetailsactivo, cada tienda se obtiene individualmente. Desactivalo para ejecuciones mas rapidas solo de listado.
Preguntas frecuentes
Una ejecucion devolvio 0 registros. Por que?
La combinacion de filtros no coincidio con ninguna tienda en esa ciudad. Relaja los filtros (quita query o category, baja minRating, o desactiva freeDeliveryOnly / primeOnly). Las ejecuciones sin resultados no se cobran.
Que ciudades y paises se admiten?
Colombia (country: CO) en Bogota, Medellin, Cali y Barranquilla. Son los mercados que Rappi sirve de forma mas confiable por HTTP.
Como extraigo un solo restaurante?
Pasa la URL de su pagina o el ID numerico de tienda en startUrl. Solo se extrae esa tienda, con su menu completo cuando withDetails esta activo.
Por que algunos precios o campos son null?
No toda tienda reporta pedido minimo, distancia, tarifa de servicio o metodos de pago, y algunos productos no tienen descuento. Los valores de origen ausentes se devuelven como null, nunca inventados.
Puedo obtener menus sin horarios, o viceversa?
Ambos vienen juntos cuando withDetails esta activo. Pon withDetails en false para devolver solo campos de listado.
Es una herramienta oficial de Rappi? No. Este actor es independiente y no tiene afiliacion con Rappi. Solo lee datos disponibles publicamente en rappi.com.co.
Mas scrapers en scrapers.lat
Creado y mantenido por scrapers.lat, donde publicamos scrapers para plataformas publicas de Estados Unidos y America Latina: registros de empresas, datos gubernamentales, finanzas, comercio electronico y mas. Explora el catalogo o solicita un scraper a medida en scrapers.lat.
Herramienta independiente, sin afiliacion con Rappi. Accede solo a datos de tiendas y menus disponibles publicamente.
