Drogasil Brazil Pharmacy, Health & Beauty Scraper at a glance
Drogasil Brazil Pharmacy, Health & Beauty Scraper is a ready-to-run Apify actor from abotapi for collecting ecommerce data. Its documented output includes image, name, change type (incremental mode), sku and ean / barcode, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.20 per 1,000 results on the Apify Free plan and from $1.50 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Ecommerce
- Pricing
- $2.20 per 1,000 results (Free plan), from $1.50 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 27 options
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.
What Drogasil Brazil Pharmacy, Health & Beauty Scraper can do
- 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.
Choose what to collect
These inputs let you configure Drogasil Brazil Pharmacy, Health & Beauty Scraper. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | Choose 'search' to search the catalogue by keyword or browse a catalogue section, or 'url' to scrape pasted links: product pages, catalogue section pages and search result pages are all accepted. |
queriesarray | Only used when mode = search, ignored in url mode. One or more keywords, for example dipirona, vitamina c or shampoo. Leave empty and pick a Catalogue section below to browse a whole section instead. |
categoriesarray | Only used when mode = search, ignored in url mode. Browse whole catalogue sections. Each selected section is walked on its own, so selecting several returns products from all of them. Combine with keywords to run both. |
urlsarray | Only used when mode = url, ignored in search mode. Mix freely: product pages such as https://www.drogasil.com.br/.html , section pages such as https://www.drogasil.com.br/beleza/maquiagem/batom.html , or search pages such as https://www.drogasil.com.br/search?w=dipirona . |
brandsarray | Optional. Keep only products of these brands, spelled exactly as the store spells them on its own brand filter (for example Neosaldina, Vult, Nivea, Ruby Rose). Selecting several returns products from any of them. Leave empty for all brands. |
minPriceinteger | Optional. Keep only products priced at or above this amount, in Brazilian reais. Applied by the store itself, so it narrows the result count at the source. |
maxPriceinteger | Optional. Keep only products priced at or below this amount, in Brazilian reais. Applied by the store itself, so it narrows the result count at the source. |
Show 20 more inputs
| Input | What it controls |
|---|---|
soldBystring | Optional. Keep only products sold by the pharmacy's own stock, or only products sold by its marketplace partners. The pharmacy's own stock is what the store can fulfil from its own branches; a marketplace partner ships the order itself. |
excludeKitsboolean | Optional. Drop bundled kits and keep only single products. Applied by the store itself, so it narrows the result count at the source. |
prescriptionFilterstring | Optional. Keep only prescription medicines, or only products that need no prescription. The store publishes the prescription stripe classification on every product but does not offer it as a filter, so this is applied to the products that come back and a run may therefore return fewer than Max products. |
inStockOnlyboolean | Optional. Keep only products the store currently reports live stock for. Requires Fetch product details, because live stock is only published on the product page. |
sortBystring | The order the store returns results in. Relevance is the store's own default ordering. |
fetchDetailsboolean | Read each product's own page to add the barcode (EAN), the pre-discount price and discount, the multi-buy 'leve mais por menos' price per unit and its qualifying quantity, the Pix and instalment prices, live stock, the full image gallery, the description, the per-variant rows with their own price and stock, and the regulatory block: active ingredient, dosage, manufacturer, health-ministry registration number, prescription stripe classification, controlled-substance and psychotropic codes, therapeutic class and the package-insert link. Turn off for a faster, cheaper run that returns listing fields only. |
maxItemsinteger | Maximum number of products to return across the whole run. This is the run's cap. Use 0 for unlimited. |
maxPagesinteger | Maximum number of result pages read per keyword, catalogue section or link. 0 means no limit, which is the default: the run then stops only at Max products, at the end of the results, or when a page returns nothing new. |
termstring | Single-keyword alias of Search keywords: added to that list. Only used when mode = search. |
startPageinteger | First result page to read for each keyword or section (1 = from the beginning). A run that starts after page 1 is never treated as a complete scan by incremental expiry. |
failOnNoResultsboolean | When on, a run that finds no products ends as FAILED instead of finishing with an empty dataset. Connection failures always fail the run, regardless of this switch. |
resumeFromRunIdstring | Paste a previous run ID or dataset ID to continue a large catalogue pull without returning or charging for products already collected there. Use this after an interrupted run. For recurring daily monitoring of the same search, use Incremental mode below instead. |
incrementalModeboolean | Turn this on for daily or recurring monitoring. The first run returns every matching product as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED products. Turn on Emit unchanged or Emit expired only when you also want those rows returned (and billed). State is kept separately for each search, filter and detail setup; use State key to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above. |
stateKeystring | Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently configured runs. Leave empty to let the actor derive a key automatically from the search, filters and detail settings, so different searches never mix state with each other. |
emitUnchangedboolean | Off by default. Turn on to also return products that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you want the full snapshot every run. |
emitExpiredboolean | Off by default. Turn on to also return products that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, so never when Max products capped it or when Resume was used. This returns, and bills, extra synthetic rows, so leave it off unless you need expiry tracking. |
ignoreFieldsForChangesarray | Field names that must NOT make a product count as UPDATED in incremental mode. They are still returned in every row. Add top-level names such as badges or image, or a nested path such as variantAttributes.value. The result position (page and rank) is always ignored. |
mcpConnectorsarray | Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write or digest. Leave empty to skip; never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com). |
notionParentPageUrlstring | URL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on items written to each connector per run. Does not affect the dataset. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
imageImage (image)nameNamechangeTypeChange type (incremental mode) (text)productIdSKUeanEAN / barcodebrandBrandpricePrice (BRL)originalPriceWas (BRL)discountPercentDiscount %multiBuyUnitPriceMulti-buy price per unit (BRL)multiBuyMinQuantityMulti-buy from (units)currencyCurrencyShow 64 more fields
onSaleReduced (boolean)inStockIn stock (boolean)stockQuantityStockprescriptionRequiredPrescription needed (boolean)prescriptionCategoryPrescription classactiveIngredientActive ingredientdosageDosagehealthMinistryRegistrationHealth ministry registrationmanufacturerManufacturerpackSizePack sizesoldBySold bysellerNameMarketplace sellercategoryPathCategory pathurlURL (link)changedFieldsChanged fields (incremental mode) (array)firstSeenAtFirst seen (incremental mode) (date)lastSeenAtLast seen (incremental mode) (date)skuSKU codeimagesImagesvariantsVariantsvariantCountVariant countvariantAttributesVariant attributespixPricePix price (BRL)pixDiscountPercentPix discount %installmentsInstallmentsdescriptionDescriptionshortDescriptionShort descriptionlongDescriptionLong descriptionusageInstructionsUsage instructionstherapeuticClassCodeTherapeutic class codetherapeuticClassNameTherapeutic classrequiresRefrigerationNeeds refrigerationisGenericMedicineGeneric medicineisKitKitcontrolledMedicationControlled medicationpackageInsertUrlPackage insert URLpackageInsertPagePackage insert pagebreadcrumbBreadcrumbcategoriesCategoriesbadgesBadgesweightKgWeight (kg)productGroupProduct grouppharmaceuticalFormPharmaceutical formprescriptionStripeCodePrescription stripe codebenefitProgramAvailableBenefit programsearchModeSearch modescrapedAtScraped atcountryCountrysourceSourcesourceUrlSource URLcategoryCategorysubcategorySubcategoryskuIdsVariant SKUsinstallmentPriceInstallment amount (BRL)installmentTotalInstallments total (BRL)paymentMethodPayment methodpromotionsPromotionssizesSizescolorsColorsgenderGenderpageResult pagerankResult ranksearchTermSearch termsearchUrlSearch URLExample output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"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"
}Ways to use this data
- 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.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Drogasil Brazil Pharmacy, Health & Beauty Scraper return?
The documented output for Drogasil Brazil Pharmacy, Health & Beauty Scraper includes image, name, change type (incremental mode), sku, ean / barcode, brand, price (brl) and was (brl). Availability of each field depends on the source page and the selected mode.
How much does Drogasil Brazil Pharmacy, Health & Beauty Scraper cost?
It costs $2.20 per 1,000 results on the Apify Free plan and from $1.50 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
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. When the pages simply could not be loaded, the message reads "Could not load any results page (the requests failed), so nothing was collected. This is a connection problem, not an empty search." Run it again in a few minutes, or try a different keyword, section or link.
What do the dataset views show?
The dataset has three views: Products (the overview), Product detail (the regulatory block, stock and variants) and Changes (the incremental status of each row).
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.
