Rappi Scraper: Colombia Restaurants, Menus & Prices API avatar

Rappi Scraper: Colombia Restaurants, Menus & Prices API

Pricing

from $6.15 / 1,000 results

Go to Apify Store
Rappi Scraper: Colombia Restaurants, Menus & Prices API

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

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

6 days ago

Last modified

Share

Rappi Scraper: Colombia Restaurants, Menus & Prices

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

Apify Coverage Output Billing

Table of contents

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

FieldTypeRequiredDefaultDescription
countryenumyesCORappi country to scrape. Currently CO (Colombia). Sets the domain, language and proxy country.
cityenumnoBogotáCity within Colombia: Bogotá, Medellín, Cali, or Barranquilla.
querystringno(empty)Free-text search matched against each store name, brand and cuisine tags, for example sushi, mcdonalds, vegano.
categorystringno(any)Filter stores by cuisine category name, for example Hamburguesa, Pizza, Sushi, Pollo, Saludable, Desayunos.
minRatingnumberno(any)Only return stores with a rating at or above this value (0 to 5), for example 4.5.
freeDeliveryOnlybooleannofalseOnly return stores with a $0 delivery fee.
primeOnlybooleannofalseOnly return stores advertising a Rappi Prime / prime-exclusive offer.
maxStoresintegerno10Maximum number of stores to collect.
withDetailsbooleannotrueEnrich each store with its full menu, hours, payment methods and geo. Paid plans only.
startUrlstringno(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.

FieldTypeDescription
imageUrlstringStore logo image URL.
namestringStore display name.
urlstringCanonical store page URL on rappi.com.co.
storeIdstringRappi store ID (unique per store).
brandNamestringBrand name of the store.
brandIdstringBrand ID.
superStoreIdstringParent super-store ID.
storeTypestringStore type, for example restaurant.
partnerTypestringPartner type, for example restaurant.
tierstringStore tier, for example standard.
categorystringComma-separated cuisine category tags.
ratingnumberStore rating, 0 to 5, or null.
reviewCountintegerNumber of customer reviews.
rappiScorenumberInternal Rappi quality score, or null.
deliveryTimestringHuman-readable delivery estimate, for example 29 min.
etaMinutesintegerDelivery estimate in minutes.
deliveryFeeintegerDelivery fee in COP.
deliveryMethodsstring[]Available delivery methods, for example ["delivery", "pickup"].
promoLabelstringShort promotion label shown on the card, or null.
promotionsobject[]Structured promotions (type, label, title, value, prime flag, min amount, expiry).
isMarketplacebooleanWhether the store is a Rappi marketplace store.
isNewbooleanWhether the store is flagged as new.
topPerformerbooleanWhether the store is flagged as a top performer.
recommendedbooleanWhether the store is recommended.
hasVouchersbooleanWhether vouchers are available.
hasBioPackagingbooleanWhether the store uses eco-friendly packaging.
addressstringStore address.
detailAddressstringDetailed store address (from the store detail), or null.
citystringCity name.
countrystringCountry name.
statusstringStore status, for example OPEN.
isOpenbooleanWhether the store is currently open.
openSoonbooleanWhether the store opens soon.
openTimeTodaystringToday opening time, or null.
closeTimeTodaystringToday closing time, or null.
isExclusivebooleanWhether the store is a Rappi exclusive.
backgroundImagestringStore banner image URL.
currencyCodestringCurrency of monetary fields. COP for Colombia.
minimumOrderValueintegerMinimum order value in COP, or null.
distanceMetersintegerDistance to the store in meters, or null.
freeDeliverybooleanWhether delivery is currently free.
storeLatnumberStore latitude, or null.
storeLngnumberStore longitude, or null.
serviceFeePercentagenumberService fee percentage, or null.
hasPickupbooleanWhether in-store pickup is available.
paymentMethodsstring[]Accepted payment methods, or null.
dietaryRestrictionsobject[]Dietary restriction tags, or null.
productCountintegerNumber of products in the menu (with details on).
hoursobject[]Weekly opening hours (day, open, close) with details on.
menuobject[]Full menu with details on. See fields below.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull 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, openTimeToday and closeTimeToday, 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:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "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 result event). Menu enrichment adds a details event 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 error field and does not charge. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on 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 higher maxStores.
  • Menu enrichment is slower. With withDetails on, 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.

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

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

Apify Cobertura Salida Facturacion

Tabla de contenido

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

CampoTipoObligatorioPredeterminadoDescripcion
countryenumsiCOPais de Rappi a extraer. Actualmente CO (Colombia). Define el dominio, el idioma y el pais del proxy.
cityenumnoBogotáCiudad dentro de Colombia: Bogotá, Medellín, Cali o Barranquilla.
querystringno(vacio)Busqueda de texto libre contra el nombre, la marca y las etiquetas de cocina de cada tienda, por ejemplo sushi, mcdonalds, vegano.
categorystringno(cualquiera)Filtra tiendas por categoria de cocina, por ejemplo Hamburguesa, Pizza, Sushi, Pollo, Saludable, Desayunos.
minRatingnumberno(cualquiera)Solo devuelve tiendas con una calificacion igual o superior a este valor (0 a 5), por ejemplo 4.5.
freeDeliveryOnlybooleannofalseSolo devuelve tiendas con costo de envio de $0.
primeOnlybooleannofalseSolo devuelve tiendas que anuncian una oferta Rappi Prime o exclusiva de Prime.
maxStoresintegerno10Numero maximo de tiendas a recolectar.
withDetailsbooleannotrueEnriquece cada tienda con su menu completo, horarios, metodos de pago y geo. Solo planes pagos.
startUrlstringno(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.

CampoTipoDescripcion
imageUrlstringURL del logo de la tienda.
namestringNombre de la tienda.
urlstringURL canonica de la tienda en rappi.com.co.
storeIdstringID de tienda de Rappi (unico por tienda).
brandNamestringNombre de la marca de la tienda.
brandIdstringID de la marca.
superStoreIdstringID de la super-tienda padre.
storeTypestringTipo de tienda, por ejemplo restaurant.
partnerTypestringTipo de socio, por ejemplo restaurant.
tierstringNivel de la tienda, por ejemplo standard.
categorystringEtiquetas de categoria de cocina separadas por comas.
ratingnumberCalificacion de la tienda, 0 a 5, o null.
reviewCountintegerNumero de resenas de clientes.
rappiScorenumberPuntaje interno de calidad de Rappi, o null.
deliveryTimestringEstimacion de entrega legible, por ejemplo 29 min.
etaMinutesintegerEstimacion de entrega en minutos.
deliveryFeeintegerCosto de envio en COP.
deliveryMethodsstring[]Metodos de entrega disponibles, por ejemplo ["delivery", "pickup"].
promoLabelstringEtiqueta corta de promocion en la tarjeta, o null.
promotionsobject[]Promociones estructuradas (tipo, etiqueta, titulo, valor, indicador Prime, monto minimo, vencimiento).
isMarketplacebooleanSi la tienda es un marketplace de Rappi.
isNewbooleanSi la tienda esta marcada como nueva.
topPerformerbooleanSi la tienda esta marcada como destacada.
recommendedbooleanSi la tienda esta recomendada.
hasVouchersbooleanSi hay cupones disponibles.
hasBioPackagingbooleanSi la tienda usa empaque ecologico.
addressstringDireccion de la tienda.
detailAddressstringDireccion detallada (desde el detalle de la tienda), o null.
citystringNombre de la ciudad.
countrystringNombre del pais.
statusstringEstado de la tienda, por ejemplo OPEN.
isOpenbooleanSi la tienda esta abierta actualmente.
openSoonbooleanSi la tienda abre pronto.
openTimeTodaystringHora de apertura de hoy, o null.
closeTimeTodaystringHora de cierre de hoy, o null.
isExclusivebooleanSi la tienda es exclusiva de Rappi.
backgroundImagestringURL de la imagen de banner de la tienda.
currencyCodestringMoneda de los campos monetarios. COP para Colombia.
minimumOrderValueintegerPedido minimo en COP, o null.
distanceMetersintegerDistancia a la tienda en metros, o null.
freeDeliverybooleanSi el envio es gratis actualmente.
storeLatnumberLatitud de la tienda, o null.
storeLngnumberLongitud de la tienda, o null.
serviceFeePercentagenumberPorcentaje de tarifa de servicio, o null.
hasPickupbooleanSi hay recogida en tienda disponible.
paymentMethodsstring[]Metodos de pago aceptados, o null.
dietaryRestrictionsobject[]Etiquetas de restricciones dieteticas, o null.
productCountintegerNumero de productos del menu (con detalles activados).
hoursobject[]Horarios semanales (dia, apertura, cierre) con detalles activados.
menuobject[]Menu completo con detalles activados. Ver campos abajo.
observedAtstringMarca de tiempo ISO 8601 de cuando se recolecto el registro.
errorstringnull 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, openTimeToday y closeTimeToday, 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:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginar datasets grandes
curl "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 evento details encima, 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 error y no cobra. Las ejecuciones vacias no cuestan nada.
  • Se respeta el limite de gasto. Define maxTotalChargeUsd en 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 un maxStores mayor.
  • El enriquecimiento de menu es mas lento. Con withDetails activo, 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.