Rappi APIrappi.com.mx ↗
Access Rappi Mexico restaurant listings, menus, prices, ratings, and delivery info by location or keyword. 3 endpoints covering search, browse, and menu detail.
What is the Rappi API?
The Rappi Mexico API exposes 3 endpoints for searching and browsing restaurants on rappi.com.mx, retrieving location-based listings, and pulling full menu data. The get_restaurant_details endpoint returns a complete menu broken into categories, with per-product prices, descriptions, and availability, alongside schedule, ratings, and current open/closed status.
curl -X GET 'https://api.parse.bot/scraper/b9f65531-2721-425e-b2d7-72292886c34d/search_restaurants?limit=5&query=pizza' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace rappi-com-mx-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Rappi Mexico SDK — search, list, and drill into restaurant menus."""
from parse_apis.rappi_mexico_restaurant___product_search_api import (
Rappi, RestaurantNotFound
)
client = Rappi()
# Search for taco restaurants — limit caps total items fetched.
for result in client.searchresults.search(query="tacos", limit=3):
print(result.name, result.rating, result.status)
for product in result.products[:2]:
print(f" {product.name}: ${product.price}")
# List nearby restaurants in Mexico City by coordinates.
nearby = client.restaurantsummaries.list(lat=19.4326, lng=-99.1332, limit=3)
restaurant_summary = nearby.first()
if restaurant_summary:
print(restaurant_summary.name, restaurant_summary.delivery_time, restaurant_summary.delivery_price)
# Drill into the full detail with menu.
full = restaurant_summary.details()
print(full.name, full.address, full.tags)
for category in full.menu[:2]:
print(f" Category: {category.category_name}")
for item in category.products[:2]:
print(f" {item.name} - ${item.price} (available: {item.is_available})")
# Fetch a specific restaurant by store_id.
try:
detail = client.restaurants.get(store_id="10000079")
print(detail.name, detail.rating, detail.delivery_time)
except RestaurantNotFound as exc:
print(f"Restaurant not found: {exc.store_id}")
print("exercised: searchresults.search / restaurantsummaries.list / details / restaurants.get")
Full-text search for restaurants and their products by keyword. Returns matching restaurants with product listings including prices and availability. Results are scoped to Mexico City area. Each result carries matched products — use get_restaurant_details for the full menu.
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of restaurants to return |
| query | string | Search keyword for restaurants or products |
{
"type": "object",
"fields": {
"query": "search keyword used",
"stores": "array of restaurant objects with store_id, name, brand_name, rating, delivery_time, status, and products array",
"total_stores": "total number of matching stores"
},
"sample": {
"data": {
"query": "pizza",
"stores": [
{
"url": "https://www.rappi.com.mx/restaurantes/1306709261",
"logo": "https://images.rappi.com.mx/restaurants_logo/pizza.png",
"name": "Little Caesars® Glorieta de insurgentes (P)",
"rating": 4.5,
"status": "OPEN",
"brand_id": 642,
"category": "restaurants",
"products": [
{
"name": "Pepperoni",
"image": "https://images.rappi.com.mx/products/a50c7339.png",
"price": 139,
"in_stock": true,
"product_id": 8496977,
"has_discount": false,
"original_price": 139
}
],
"store_id": 1306709261,
"promotion": "Envío Gratis: Aplican TyC",
"brand_name": "Little Caesars",
"delivery_cost": 0,
"delivery_time": "12 min",
"has_free_shipping": false,
"delivery_time_minutes": 12
}
],
"total_stores": 5
},
"status": "success"
}
}About the Rappi API
Endpoints and Data Covered
The API has three endpoints. list_restaurants accepts lat and lng coordinates and returns a ranked array of nearby restaurants, each with store_id, name, brand_name, rating, total_reviews, delivery_time, delivery_price, status, and address. The limit parameter controls how many results come back. search_restaurants takes a query string (e.g. "pizza", "sushi") and returns matching stores with their associated product listings, including prices and ratings, as well as a total_stores count for the query.
Menu and Restaurant Detail
get_restaurant_details takes a store_id — obtainable from either of the listing endpoints — and returns the most detailed response. The menu field is an array of category objects, each containing a products array with product_id, name, description, price, and availability. The top-level response also includes tags (cuisine strings), schedule (day/time objects for opening hours), category, brand_name, address, rating, and status.
Coverage and Scope
All three endpoints target rappi.com.mx, so restaurant coverage reflects what Rappi Mexico surfaces for a given coordinate or search term. Geographic queries depend on providing valid Mexican coordinates via lat and lng. Store IDs are integers and are consistent across endpoints, so a store_id from list_restaurants can be passed directly to get_restaurant_details.
The Rappi API is a managed, monitored endpoint for rappi.com.mx — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when rappi.com.mx changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official rappi.com.mx API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Map nearby Rappi Mexico restaurants by GPS coordinates and display delivery time and price estimates.
- Build a food search tool that queries restaurants and products by keyword and surfaces prices.
- Aggregate menu data across multiple restaurants to compare pricing for a specific dish category.
- Monitor a restaurant's open/closed status and schedule across the week using the
schedulefield. - Collect cuisine tags and categories from
get_restaurant_detailsto classify restaurants by type. - Track
ratingandtotal_reviewsacross restaurants for competitive analysis in a specific area.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Rappi have an official public developer API?+
What does `search_restaurants` return beyond restaurant names?+
stores array includes store_id, name, brand_name, rating, delivery_time, status, and a products array with item-level data. The total_stores field tells you how many matches the query found in total, regardless of the limit applied.Does the API return user reviews or individual review text?+
rating and total_reviews counts from list_restaurants, and a numeric rating from get_restaurant_details, but individual review text and reviewer details are not included. You can fork this API on Parse and revise it to add an endpoint covering review content.Is the restaurant data limited to a specific region of Mexico?+
list_restaurants uses the lat and lng you provide, so results reflect whatever Rappi Mexico serves at that location. Only Mexican Rappi coordinates are in scope — rappi.com.mx does not cover other country domains. You can fork this API on Parse and revise it to target a different Rappi country domain if needed.Can I retrieve product images or promotional banner images from menus?+
menu products array returns product_id, name, description, price, and availability, but image URLs are not included in the current response shape. You can fork this API on Parse and revise it to add image fields to the product response.