Drogasil Brazil Pharmacy, Health & Beauty Scraper avatar

Drogasil Brazil Pharmacy, Health & Beauty Scraper

Pricing

from $1.50 / 1,000 product results

Go to Apify Store
Drogasil Brazil Pharmacy, Health & Beauty Scraper

Drogasil Brazil Pharmacy, Health & Beauty Scraper

Scrape Drogasil (drogasil.com.br) medicines, health and beauty products by keyword, catalogue section or pasted link. Returns EAN, brand, price in BRL, discount, multi-buy price, stock, images, variants and the regulatory block. Incremental mode tracks daily changes.

Pricing

from $1.50 / 1,000 product results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

0

Monthly active users

3 days ago

Last modified

Categories

Share

Drogasil Scraper: Brazil Pharmacy Medicines, Prices, Stock & Regulatory Data

Drogasil Scraper turns drogasil.com.br into a clean product feed. Get medicines, vitamins and supplements, beauty, daily care, baby and pet products with the barcode, the current and pre-discount price in BRL, the multi-buy offer, live stock, images, per-variant rows and the full Brazilian pharmacy regulatory block. Search by keyword, browse a whole catalogue section, or paste links, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.

Why This Scraper?

  • Three ways to find products. Search by keyword, browse a whole catalogue section, or paste product, section and search links, and mix keywords with sections in the same run.
  • The full regulatory block on medicines. Active ingredient, dosage, manufacturer, the ANVISA health-ministry registration number, the prescription stripe classification, and the controlled-substance and psychotropic codes.
  • Every price the store shows. Current price, the pre-discount price and discount, the "leve mais por menos" multi-buy price, and the Pix instant-payment price and instalment plan.
  • Live stock and per-variant rows. A product with several package sizes or shades comes back as one row per real variant, each with its own price and stock.
  • Store filters applied at the source. Brand, price range, seller and kits narrow the result count before it ever reaches you; prescription requirement and in-stock-only are applied on top.
  • Built for schedules. Incremental mode returns only new and changed products on recurring runs, and a run that could not read the store fails loudly instead of returning an empty dataset.
  • Send results straight into your apps. Pipe the same run into Notion, Linear or Airtable through MCP connectors, alongside the dataset.

Use Cases

  • Price and promotion monitoring: track the current price, the pre-discount price and the multi-buy offer across a tracked product list on a schedule.
  • Pharmacy assortment research: build a catalogue of medicines with their active ingredient, dosage and prescription classification across categories.
  • Competitive intelligence for health and beauty brands: watch a brand's catalogue presence, badges and stock across sections.
  • Stock and availability alerts: catch products going out of stock or coming back with incremental mode's REAPPEARED and EXPIRED classification.
  • Marketplace analysis: compare products sold by the pharmacy's own stock against marketplace partners.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
productId / sku"PRD000123"
name"Sample Pain Relief Tablets 1g, 10 count"
brand"Sample Brand"
urlCanonical product address, tracking parameters stripped
image / imagesCover image and gallery
price / currency12.5 / "BRL"
packSizePack size as the store states it, for example "10 Comprimidos"
prescriptionRequiredfalse
isGenericMedicinefalse
soldBy"drogasil" (its own stock) or "marketplace" (a partner seller)
categories / categoryPathCategory trail, as a list and as one string
productGroupThe store's own product grouping, for example "Medicamentos"
variantCount / variantAttributesHow many variants exist, and this one's option values
isSponsoredWhether the row was a sponsored placement in a keyword search
eanBarcode / GTIN-13 (with Fetch product details)
originalPrice / discountPercentPre-discount price and the reduction (with details)
multiBuyUnitPrice / multiBuyMinQuantityThe multi-buy offer: buy this many or more, pay this per unit (with details)
pixPriceThe instant-payment price (with details)
stockQuantity / inStockLive stock the store reports (with details)
activeIngredient / dosage / manufacturerThe regulatory block (with details)
healthMinistryRegistration / prescriptionCategoryANVISA registration and the prescription stripe class (with details)
variantsOne row per variant, each with its own price and stock (with details)
changeType"NEW", "UPDATED", "UNCHANGED", "REAPPEARED" or "EXPIRED" (incremental mode)

How to Use

  1. Pick a mode: search (keywords and/or catalogue sections) or url (paste links).
  2. For search mode, enter keywords, pick catalogue sections, or both, and set the filters you want: brand, price range, seller, kits, prescription requirement, in-stock only and sort order.
  3. Turn Fetch product details on for the full record (barcode, pre-discount price, multi-buy price, stock, description and the regulatory block), or off for a faster listing-only run.
  4. Set Max products (and optionally Max result pages) to control run size and cost, then click Start. Download the dataset as JSON, CSV or Excel, or read it through the API.

Search by keyword:

{
"mode": "search",
"queries": ["dipirona"],
"maxItems": 50
}

Browse a catalogue section with the store's own filters:

{
"mode": "search",
"categories": ["beleza"],
"brands": ["Vult"],
"maxPrice": 100,
"fetchDetails": true,
"maxItems": 100
}

Paste links (product, catalogue section, search):

{
"mode": "url",
"urls": [
"https://www.drogasil.com.br/dipirona-genericos-1g-com-10-comprimidos.html",
"https://www.drogasil.com.br/beleza/maquiagem/batom.html"
],
"fetchDetails": true
}

Recurring monitoring of a section:

{
"mode": "search",
"categories": ["medicamentos"],
"incrementalMode": true,
"emitExpired": true,
"maxItems": 0
}

A link that already names a page number (?p=3) is honoured, so a pasted section or search link starts from that page rather than page 1.

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/drogasil-com-br-scraper").call(run_input={"mode": "search", "queries": ["dipirona"]})
for product in client.dataset(run["defaultDatasetId"]).iterate_items():
print(product["name"], product["price"], product["currency"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/drogasil-com-br-scraper').call({ mode: 'search', queries: ['dipirona'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

How Max products and Max result pages shape a run

Every keyword and every catalogue section is walked on its own, forward page by page. Max products is split evenly across them, so each keyword or section gets an equal share of the run. Each walk stops at whichever comes first: its share of Max products, Max result pages for that one keyword or section, or the store's own end of results. Max result pages at 0 means no page ceiling, so a walk then stops only at its share of Max products or at the natural end of results.

In incremental mode, Max products also counts the unchanged products that were checked but not returned, so a capped run can stop before it reaches new products further down the results. For monitoring, set Max products to 0 (as in the recurring example above) so every run checks the whole search.

Resume and recurring updates

  • Resume from a previous run (resumeFromRunId) continues ONE interrupted run: paste its run or dataset id and the products it already collected are skipped, and not billed again.
  • Incremental mode (incrementalMode) is for running the same search again and again, for example daily. The first run returns every matching product as NEW. Later runs return only NEW, UPDATED and REAPPEARED by default; turn on Emit unchanged or Emit expired to also get those rows (and pay for them). EXPIRED rows are only produced once a run has fully scanned the tracked search, never when Max products capped it or Resume was used. State is kept separately for each search, filter and detail setup; set State key to name or deliberately share a monitoring campaign.

Send results into your apps (MCP connectors)

Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each product, not the full JSON. Each item becomes one entry with the product name and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify, Settings, API & Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you have not authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where item pages should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Max items to export per connector caps how many products are written per connector, and never affects the dataset. Leave the field empty to skip this entirely, and a connector that fails never fails the run.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch to search by keyword or browse a catalogue section, or url to scrape pasted links.
queriesarray(none, prefilled with ["dipirona"])Search keywords, used only when mode is search.
categoriesarray(none)Catalogue sections to browse, used only when mode is search: medicamentos, saude, vitaminas-e-suplementos, beleza, beleza-premium, cuidados-diarios, mamae-bebe, pet, marcas-exclusivas.
urlsarray(none, prefilled with one product link and one section link)Store links to scrape, used only when mode is url: product, catalogue section or search pages.
brandsarray(none)Keep only these brands, spelled as the store spells them on its own brand filter. Applied by the store itself, in both modes.
minPriceinteger(none)Keep only products priced at or above this amount, in BRL. Applied by the store itself.
maxPriceinteger(none)Keep only products priced at or below this amount, in BRL. Applied by the store itself.
soldBystringanyany, drogasil (the pharmacy's own stock) or marketplace (partner sellers). Applied by the store itself.
excludeKitsbooleanfalseDrop bundled multi-product kits. Applied by the store itself.
prescriptionFilterstringanyany, prescription_only or no_prescription. Applied to the products returned, since the store publishes no such filter.
inStockOnlybooleanfalseKeep only products the store currently reports live stock for. Requires fetchDetails.
sortBystringrelevancerelevance, price_asc or price_desc.
fetchDetailsbooleantrueRead each product's own page for the barcode, pre-discount price, multi-buy price, Pix and instalment prices, live stock, full image gallery, description, per-variant rows and the regulatory block.
maxItemsinteger20Maximum number of products to return across the whole run. 0 means unlimited.
maxPagesinteger0Maximum number of result pages read per keyword, section or link. 0 means no limit.
resumeFromRunIdstring(none)Paste a previous run or dataset id to continue an interrupted run without re-collecting or re-billing what it already has.
incrementalModebooleanfalseTurn on for recurring runs of the same search: later runs return only NEW, UPDATED and REAPPEARED products by default.
stateKeystring(none)Name a monitoring campaign to keep its state stable, or leave empty to derive one automatically from the search, filters and detail setting.
emitUnchangedbooleanfalseAlso return (and bill) products unchanged since the last run, marked UNCHANGED.
emitExpiredbooleanfalseAlso return (and bill) products no longer found after a complete scan, marked EXPIRED.
proxyobjectApify ProxyConnection settings. The store refuses connections it does not recognise, so a run with no connection at all is likely to be refused.
mcpConnectorsarray(none)Optional: send a summary of each product to apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which product pages are created.
maxNotifyListingsinteger50Cap on products written to each connector per run. Does not affect the dataset.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"productId": "PRD000123",
"sku": "PRD000123",
"name": "Sample Pain Relief Tablets 1g, 10 count",
"brand": "Sample Brand",
"url": "https://www.drogasil.com.br/sample-pain-relief-tablets-1g-10-count.html",
"image": "https://example.invalid/sample-pain-relief-tablets.webp",
"images": ["https://example.invalid/sample-pain-relief-tablets.webp"],
"currency": "BRL",
"price": 24.9,
"originalPrice": 34.9,
"discountPercent": 28.65,
"multiBuyUnitPrice": 21.9,
"multiBuyMinQuantity": 3,
"pixPrice": 23.75,
"packSize": "10 Comprimidos",
"prescriptionRequired": false,
"isGenericMedicine": true,
"isKit": false,
"requiresRefrigeration": false,
"soldBy": "drogasil",
"categories": ["Sample Category", "Sample Subcategory"],
"categoryPath": "Sample Category > Sample Subcategory",
"productGroup": "Medicamentos",
"ean": "0000000000000",
"stockQuantity": 40,
"inStock": true,
"activeIngredient": "Sample Active Ingredient",
"dosage": "1G",
"manufacturer": "Sample Manufacturer",
"healthMinistryRegistration": "0000000000001",
"prescriptionCategory": "MEDICAMENTO NAO TARJADO",
"controlledMedication": false,
"variantCount": 0,
"variants": [],
"isSponsored": false,
"searchMode": "search",
"scrapedAt": "2026-01-01T00:00:00Z"
}

Plan Requirement

The default connection works out of the box, and the actor rotates connections automatically when one is refused. For large or frequent runs, the residential proxy group gives more headroom; pick it under Connection.

FAQ

How much does it cost?

You pay per product returned, plus one Detail enrichment charge per product when Fetch product details is on. The Pricing tab shows the current rates. Use Max products to cap the cost of any run.

This actor collects only publicly available catalogue data. You are responsible for how you use it: follow drogasil.com.br's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Product names, prices and regulatory details are generally facts, but images and brand marks may be subject to third-party rights.

Can I get only new or changed products on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated and reappeared products, and unchanged ones are not billed unless you turn on Emit unchanged.

Why did my run fail instead of returning an empty dataset?

If the store refuses every request, the run stops with a clear message so "no products matched" is never confused with "nothing could be read". The message also says whether no connection was set up, whether the connection option you picked was refused, or whether the store itself blocked the request, because each needs a different next step. Run it again in a few minutes, or try a different keyword, section or link.

Why did my run return fewer products than Max products?

Prescription requirement and in-stock-only are applied to the products that come back, because the store publishes no such filters, so a run using them can return fewer than Max products. A keyword or section can also end early because the store's own declared result count, or its own declared page ceiling, said there was nothing more.

Why is there no reviews field?

drogasil.com.br publishes no review data on its product pages: no rating, no review count and no review text. The reviews area is filled in only inside the browser, it is switched off for medicines and over-the-counter medicines, and it comes back empty for the rest, so there is nothing to extract. This is a finding about the store, not a missing feature.

Can I choose a country or region?

No, and there is deliberately no country input. drogasil.com.br serves Brazil only, from one Portuguese-language catalogue with every price in BRL and no country or language switcher, so a country input would change nothing. Prices are the store's national public prices; branch-level prices only appear after a postcode is entered at checkout.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

๐Ÿ”— Want more e-commerce data?

Pair this actor with these related scrapers from the same team:

๐Ÿ›’ Americanas Brazil
Scrape Americanas Brazil (americanas.com.br) by keyword, department or pasted link...
๐Ÿ›’ Netshoes Brazil
Scrape sportswear and footwear from netshoes.com.br. Search by keyword with the store's...
๐Ÿ”Œ Casas Bahia Brazil Electronics & Home Goods Scraper
Scrape products from Casas Bahia Brazil by keyword, department, or URL. Filter by brand...
๐Ÿงฉ Mercado Livre Brazil
Scrape Mercado Livre Brazil by keyword or URL. Filter by category, brand, price...
๐Ÿ›’ Chemist Warehouse AU
Scrape chemistwarehouse.com.au products with prices, RRP, discounts, stock, images...
๐Ÿ  QuintoAndar Scraper
Scrape QuintoAndar property listings across Brazil with 80+ fields, including rent, sale...

๐Ÿ‘‰ Browse all abotapi scrapers

๐Ÿ’ฌ Support

  • ๐Ÿž Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • ๐Ÿ› ๏ธ Need another site, extra fields or a private build? Email contact@abotapi.com.
  • โญ Enjoying it? A quick review on the actor page helps other users find it.