Ifood Pharmacy Scraper avatar

Ifood Pharmacy Scraper

Pricing

from $35.00 / 1,000 results

Go to Apify Store
Ifood Pharmacy Scraper

Ifood Pharmacy Scraper

Extract pharmacy data from iFood Brazil: drugstore listings by location, detailed store information, and full product catalogs with prices, EAN codes, packaging, and unit information. Ideal for price intelligence, market research, and e-commerce data.

Pricing

from $35.00 / 1,000 results

Rating

0.0

(0)

Developer

Yasmany Grijalba Casanova

Yasmany Grijalba Casanova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Extract comprehensive pharmacy data from iFood — Latin America's leading food delivery platform, with a dedicated drugstore storefront. Get pharmacy listings, detailed store profiles, category trees, and full medication and healthcare product catalogs with prices, EAN-13 barcodes, packaging and units.

Apify Actor Residential Proxy Brazil


ℹ️ Residential Proxy Required This Actor requires a residential proxy for reliable data extraction. You have two options:

  1. Apify Residential Proxy — available on Apify paid plans. See apify.com/pricing.
  2. Your own residential proxy — provide it via the customProxyUrl input field (works on any Apify plan, including Free).

Runs without a residential proxy will stop immediately with a clear message, so you are not charged for unnecessary compute time.


Table of Contents


Quick Start

Get started in four simple steps:

Step 1: Find pharmacies in São Paulo

{
"mode": "stores",
"latitude": "-23.6051",
"longitude": "-46.6367"
}

Step 2: Get pharmacy details

{
"mode": "store_info",
"latitude": "-23.6051",
"longitude": "-46.6367",
"store_id": "9ea4a606-58d7-490f-8075-3ecdc13e8d4d"
}

Step 3: List the store's categories

{
"mode": "categories",
"latitude": "-23.6051",
"longitude": "-46.6367",
"store_id": "9ea4a606-58d7-490f-8075-3ecdc13e8d4d"
}

Step 4: Extract the product catalog for ONE category

{
"mode": "assortments",
"latitude": "-23.6051",
"longitude": "-46.6367",
"store_id": "9ea4a606-58d7-490f-8075-3ecdc13e8d4d",
"category_id": "56e4b49b-563a-4b2a-8011-8b883bd36afd"
}

Tip: To cover a full catalog, list categories first then dispatch one assortments run per category_id — runs can be parallelized for speed.


Features

FeatureDescription
100+ Pharmacies per RequestCursor-paginated listing — typical locations return 100–200 pharmacies
Complete Store ProfilesAddress, delivery info, rating, price range, minimum order
Full Product CatalogsEvery SKU with price, EAN-13 barcode, packaging, unit
Discount DetectionOriginal price + discount percent when items are on sale
Category DiscoveryFull department/aisle tree (UUIDs ready for assortments)
Incremental Dataset WritesProducts are saved as they are scraped — partial results survive crashes
Structured JSON OutputClean, schema-validated data ready for analysis

Use Cases


How It Works

+------------------+ +------------------+ +------------------+ +------------------+
| STEP 1 | | STEP 2 | | STEP 3 | | STEP 4 |
| Stores |--->| Store Info |--->| Categories |--->| Assortments |
| (location) | | (profile) | | (tree) | | (one category) |
+------------------+ +------------------+ +------------------+ +------------------+
| | | |
v v v v
100-200 Complete store Department All SKUs with
pharmacies profile + address UUIDs EAN, price, unit

Step 1: Find Pharmacies

List pharmacies delivering to any Brazilian coordinates:

{
"mode": "stores",
"latitude": "-23.6051",
"longitude": "-46.6367"
}

Returns: A cursor-paginated list (20 pharmacies per page) with store_id, name, rating, delivery fee, delivery time, and distance.

Step 2: Get Pharmacy Details

Pick a store_id from Step 1 and fetch its full profile:

{
"mode": "store_info",
"latitude": "-23.6051",
"longitude": "-46.6367",
"store_id": "9ea4a606-58d7-490f-8075-3ecdc13e8d4d"
}

Returns: Full address (street, city, district, state, ZIP), delivery fee in BRL, price range, minimum order, rating, and more.

Step 3: List Categories

Discover the store's departments. Each category has a UUID used in Step 4:

{
"mode": "categories",
"latitude": "-23.6051",
"longitude": "-46.6367",
"store_id": "9ea4a606-58d7-490f-8075-3ecdc13e8d4d"
}

Returns: Array of {code, name} pairs — e.g. Medicamentos, Higiene e Beleza, Saúde e Bem-Estar, Primeiros Socorros, Suplementos e Vitaminas.

Step 4: Extract a Category's Products

Extract every SKU of one category (paginated, 50 items per page):

{
"mode": "assortments",
"latitude": "-23.6051",
"longitude": "-46.6367",
"store_id": "9ea4a606-58d7-490f-8075-3ecdc13e8d4d",
"category_id": "56e4b49b-563a-4b2a-8011-8b883bd36afd"
}

Returns: Products with ean, price, price_original, discount_percent, packaging, unit, quantity, image URL.

Pro tip: Run multiple assortments jobs in parallel (one per category_id) to extract a full catalog faster.


Input Parameters

Required Parameters

ParameterTypeDescription
modestringOperation mode: stores, store_info, categories, or assortments
latitudestringLocation latitude (e.g., "-23.6051")
longitudestringLocation longitude (e.g., "-46.6367")

Mode-Specific Parameters

ParameterTypeRequired ForDescription
store_idstringstore_info, categories, assortmentsPharmacy UUID from stores mode
category_idstringassortmentsCategory UUID from categories mode

Optional Parameters

ParameterDefaultDescription
maxPages200Safety cap on paginated requests (stores: 20 pharmacies/page, assortments: 50 products/page)
pageDelay1Seconds between paginated requests to avoid rate limits
maxRetries3Retry attempts for failed requests
timeout30Request timeout in seconds

Proxy Configuration

⚠️ Proxy Required — This Actor requires Apify Residential Proxy to work. Make sure your Apify plan includes Residential Proxy access. Proxy usage is billed separately to your Apify account.

ParameterDefaultDescription
useApifyProxytrueEnable Apify Proxy (required)
proxyGroups["RESIDENTIAL"]Proxy group — RESIDENTIAL is required
proxyCountryBRProxy country code (BR recommended)
customProxyUrlYour own residential proxy URL (overrides Apify Proxy)

Operation Modes

ModeDescriptionRequired ParametersOutput
storesList pharmacies by locationlatitude, longitude100–200 pharmacies per location
store_infoGet pharmacy detailslatitude, longitude, store_idComplete pharmacy profile
categoriesList a store's departmentslatitude, longitude, store_idArray of {code, name} pairs
assortmentsExtract products of ONE categorylatitude, longitude, store_id, category_idFull paginated SKU list

Output Examples

Stores Mode

{
"mode": "stores",
"data": [
{
"name": "DROGARIA SAO PAULO - AFONSO CELSO",
"segment": "MERCADO",
"store_id": "9ea4a606-58d7-490f-8075-3ecdc13e8d4d",
"store_slug": "drogaria-sao-paulo---afonso-celso-vila-mariana",
"available": "S",
"distance": 0.24,
"user_rating": 4.9,
"fee": 0,
"time_min_minutes": 0,
"time_max_minutes": 0,
"is_ifood_delivery": true,
"delivery_mode": "DEFAULT",
"alias": "PHARMACIES"
}
],
"metadata": {
"items_count": 161,
"scraped_at": "2026-04-23T13:00:47.261914+00:00"
}
}

Note: The stores home feed returns summary cards that include distance, rating, store_id, and basic delivery hints. For the full delivery fee and exact minutes, call store_info with the store_id — that's where delivery_fee: 11.48, delivery_time: 10, etc. come from.

Store Info Mode

{
"mode": "store_info",
"data": {
"store_id": "9ea4a606-58d7-490f-8075-3ecdc13e8d4d",
"name": "Drogaria São Paulo - Afonso Celso",
"main_category": "Mercado",
"store_type": "PHARMACY",
"city": "SAO PAULO",
"state": "SP",
"district": "VILA MARIANA",
"street_name": "R AFONSO CELSO",
"street_number": "1720",
"zip_code": "04119062",
"price_range": "CHEAPEST",
"delivery_fee": 11.48,
"type_delivery_fee": "FIXED",
"delivery_time": 10,
"minimum_order_value": 30,
"user_rating": 4.8,
"user_rating_count": 51
}
}

Categories Mode

{
"mode": "categories",
"data": {
"store_id": "9ea4a606-58d7-490f-8075-3ecdc13e8d4d",
"total_categories": 12,
"categories": [
{"code": "56e4b49b-563a-4b2a-8011-8b883bd36afd", "name": "Medicamentos"},
{"code": "9e4c5d75-5bbf-4d68-87e6-f3bc0a568368", "name": "Higiene e Beleza"},
{"code": "4d535aee-1d21-4502-a7ee-b5a92dc8e0f1", "name": "Saúde e Bem-Estar"},
{"code": "dca5ace7-ee70-4c1b-91e5-2ddbc0da6b25", "name": "Primeiros Socorros"},
{"code": "77249e1f-acbd-4f91-934c-1e46c9db7450", "name": "Suplementos e Vitaminas"}
]
}
}

Assortments Mode

Each product is pushed to the dataset as its own record (incremental), followed by a single summary record at the end.

Product record:

{
"mode": "assortments",
"item": {
"id": "04ba4c15-b563-40e7-92c0-18f35e390437",
"description": "Clortalidona 50mg Germed Pharma Caixa com 30 Comprimidos",
"ean": "7896004708867",
"price": 28.15,
"price_original": null,
"has_discount": false,
"discount_percent": null,
"availability": "AVAILABLE",
"enabled": true,
"unit": null,
"packaging": null,
"quantity": null,
"category_id": "56e4b49b-563a-4b2a-8011-8b883bd36afd",
"category_name": "Medicamentos",
"store_id": "9ea4a606-58d7-490f-8075-3ecdc13e8d4d",
"logo_url": "https://static-images.ifood.com.br/image/upload/..."
}
}

Summary record (at end of run):

{
"mode": "assortments",
"kind": "summary",
"data": {
"store_id": "9ea4a606-58d7-490f-8075-3ecdc13e8d4d",
"category_id": "56e4b49b-563a-4b2a-8011-8b883bd36afd",
"category_name": "Medicamentos",
"total_items": 100,
"pagination_total_items": 100,
"pages_fetched": 2,
"pages_failed": 0
}
}

Data Fields

Stores Mode

FieldTypeDescription
namestringPharmacy name (uppercased)
segmentstringCategory as returned by iFood (currently "MERCADO" even for pharmacies — iFood hasn't specialized this field for the drugstore catalog). Use alias or store_type in store_info to disambiguate.
store_idstringUnique pharmacy identifier (UUID)
store_slugstringURL slug derived from the store name
availablestring"S" = delivering now, "N" = closed/out of range
distancenumberDistance from the input coordinates (km)
user_ratingnumberAverage rating (0–5 stars)
feenumberDelivery fee in cents (1148 = R$11.48). Returns 0 when the pharmacy is closed / not currently accepting delivery — check store_info.delivery_fee for the canonical value.
time_min_minutesnumberMinimum delivery time (minutes)
time_max_minutesnumberMaximum delivery time (minutes)
is_ifood_deliverybooleaniFood delivery vs. store delivery
delivery_modestring"DEFAULT", "SCHEDULE", "PICKUP"
image_urlstringStore logo URL (absolute, fetchable)
aliasstringAlways "PHARMACIES"

Store Info Mode

FieldTypeDescription
store_idstringPharmacy UUID
namestringStore display name
main_categorystringFriendly category name (e.g. "Mercado")
store_typestringMerchant type code — "PHARMACY" for this actor's results
city, state, districtstringLocation components
street_name, street_numberstringPhysical address
zip_codestringBrazilian CEP (no dash)
latitude, longitudestringStore's own coordinates
price_rangestring"CHEAPEST", "CHEAP", "MODERATE", "EXPENSIVE"
delivery_feenumberDelivery fee in BRL
type_delivery_feestring"FIXED", "FREE", "DISTANCE"
delivery_timenumberExpected delivery time (minutes)
minimum_order_valuenumberMinimum order amount (BRL)
user_ratingnumberAverage rating (0–5)
user_rating_countnumberTotal reviews
availablebooleanCurrently accepting orders

Categories Mode

FieldTypeDescription
codestringCategory UUID — use as category_id in assortments mode
namestringHuman-readable category name (e.g. "Medicamentos")

Assortments Mode (per product)

FieldTypeDescription
idstringiFood's internal product UUID
descriptionstringProduct name
eanstringEAN-13 barcode — key for price-matching
pricenumberCurrent price in BRL
price_originalnumber | nullPre-discount price (null if no promo)
has_discountbooleantrue when on promotion
discount_percentnumber | nullPercent off (0–100)
availabilitystring"AVAILABLE", "UNAVAILABLE", "OUT_OF_STOCK"
enabledbooleanStore-side enabled flag
unitstring | null"UN", "ML", "MG", "G", etc. — often null for medications (check details / additional_info as a fallback).
packagingstring | null"CAIXA", "FRASCO", "BLISTER", etc. — often null (see details).
quantitynumber | nullPack size (e.g. 30 for "30 comprimidos") — often null.
minimum_quantitynumberMinimum order quantity
incremental_quantitynumberStep increment
available_unitsstringComma-separated unit types ("UNIT,KG")
category_id, category_namestringParent category
store_idstringParent store UUID
logo_urlstring | nullProduct image URL
external_codestring | nullMerchant's internal SKU reference
product_tagsarray | nullTaxonomy tags (e.g. age/prescription restrictions). Commonly null in pharmacy catalogs.

The tables above cover the most useful fields. Every record also includes metadata (scraped_at, items_count, proxy_used, etc.) and a few additional nullable fields (region, currency, is_new, is_super_restaurant, product_aisles, scale_min_quantity, scale_price). Run assortments once to inspect the full shape — all fields are documented in the structured JSON output.


Integrations

Use the API tab on the Actor page to get ready-to-use code examples in Python, JavaScript, and cURL. The examples are auto-generated with the correct parameters for immediate integration.

The dataset ships with pre-configured views for the Apify Console:

ViewShowsFields
OverviewAll recordsmode, items_count, scraped_at, proxy_used
Pharmaciesstores modename, id, segment, rating, distance, fee, availability
Store Detailsstore_info modename, category, location, delivery fee, rating
Categoriescategories modecode, name
Productsassortments modedescription, EAN, price, discount %, unit, packaging, category

Each view exports to CSV, JSON, XML, or Excel directly from the console.


How to Get Coordinates

Option 1: Google Maps

  1. Open Google Maps
  2. Right-click on any location in Brazil
  3. Click the coordinates shown to copy them
  4. Use the first number as latitude and the second as longitude

Option 2: Use Common City Coordinates

CityLatitudeLongitude
São Paulo (Centro)-23.5608786-46.6570743
Rio de Janeiro-22.9068467-43.1728965
Belo Horizonte-19.9166813-43.9344931
Brasília-15.7942287-47.8821658
Curitiba-25.4289541-49.2671340
Salvador-12.9714-38.5124
Fortaleza-3.7172-38.5433
Recife-8.0476-34.8770
Porto Alegre-30.0346-51.2177
Manaus-3.1190-60.0217

Important Notes

TopicDetails
RegionBrazil only — iFood operates exclusively in Brazil
ProxyRequired — Apify Residential Proxy (or a custom residential proxy via customProxyUrl)
Store IDUse UUIDs from stores mode — not store names or URLs
Category IDUse UUIDs from categories mode — these are per-store
One Category Per Runassortments extracts one category at a time — parallelize runs for a full catalog
Incremental WritesEach product is pushed to the dataset as soon as it is processed
CoordinatesRequired for all modes — must be Brazilian

FAQ


Support

Having issues? Here is how to get help:

  1. Check the FAQ above for common solutions
  2. Review your input parameters to ensure they match the required format
  3. Test with the default São Paulo coordinates to verify the actor is working
  4. Contact support through Apify for additional assistance