Rappi search across stores
Rappi's search across every store that delivers to a location (restaurants, supermarkets, pharmacies, Rappi Mall, pets, express and liquor stores), as the site's search page shows it: each store with id, name, type and section, brand, link, status, open flag, rating, ETA, delivery cost, minimum order, offers (tag, title, value, end date), today's hours and logo, and the store's matching products or dishes (id, name, price, list price, discount, availability, stock, has-options flag, presentation, unit price, category, EAN, age and prescription flags, image). Also the sections the search found results in (for store_type) and stores out of delivery range. Without lat/lon the country's main city is used. The search returns one list (next_page is always null); limit caps the stores returned.
Every response includes credits_used: the credits this call cost.
Parameters
| name | type | description |
|---|---|---|
qrequired | string | What to search for (a dish, product or store name, in the country's language, e.g. pizza, coca cola, hamburguesa). Example: pizza |
country | string | br (default), co, mx, ar, cl, pe, uy, ec or cr. |
lat | number | Delivery location latitude (with lon); default the country's main city, e.g. -23.5843 for Sao Paulo. |
lon | number | Delivery location longitude (with lat), e.g. -46.6746. |
store_type | string | Only one section of the search: restaurant, market (supermarkets), pharmacy, mall (Rappi Mall), pets, express or liquor, or any value from sections in a response (sections differ a little by country). |
sort | relevance | delivery_price | delivery_eta | relevance (default), delivery_price (cheapest delivery first) or delivery_eta (fastest first). |
limit | integer | Stores to return (1-100, default 50). |
Every endpoint also takes fresh, raw, fields (see lean responses and caching).
Example
curl "https://api.api.sh/rappi/v1/search?q=pizza" \
-H "x-api-key: $APISH_KEY" import os, requests
res = requests.get(
"https://api.api.sh/rappi/v1/search",
params={"q": "pizza"},
headers={"x-api-key": os.environ["APISH_KEY"]},
timeout=120,
)
res.raise_for_status()
data = res.json() const url = new URL("https://api.api.sh/rappi/v1/search");
url.searchParams.set("q", "pizza");
const res = await fetch(url, { headers: { "x-api-key": process.env.APISH_KEY } });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const data = await res.json(); Response
A JSON object with the fields described above, plus raw (the source's own data), cached, fetched_at and credits_used. Errors return {"success": false, "error": "…"} with the HTTP status (see errors). A lookup that ran but found nothing (404) costs the price above; refused calls and errors on our side are free (what's charged).