# Drogasil Scraper: Preço de Remédios, Ofertas e Monitor de Preço (`getascraper/drogasil-scraper`) Actor

Drogasil scraper (preço de remédios): price, list price, discount, offers, EAN, brand, active ingredient, strength and price per tablet. Search by word or paste category and product links. Track price drops, stock changes, new and removed products. One flat price per product.

- **URL**: https://apify.com/getascraper/drogasil-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.45 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 💊 Drogasil Scraper: Preço de Remédios, Ofertas e Monitor de Preço

<table width="100%" style="margin-bottom:0">
<tr>
<td style="padding:24px 28px;background:#FEF2F2;border:1px solid #FECACA;border-top:4px solid #DC2626;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#7F1D1D;line-height:1.3">Todo preço, desconto e oferta da Drogasil em uma tabela limpa. Every price, discount and offer from Brazil's Drogasil pharmacy, in one clean table.</span><br>
<span style="font-size:15px;color:#334155;line-height:1.6">Pull medicines, vitamins, baby care and beauty from the public Drogasil store: price, list price, discount, offers, EAN, brand, active ingredient, strength and price per tablet. Schedule the same run to see price drops, stock changes, new products and removed products.</span>
</td>
</tr>
</table>
<table width="100%" style="margin-top:0">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #FECACA;border-radius:10px 0 0 10px;vertical-align:top">
<strong style="color:#B91C1C;font-size:15px">🏷️ Real discounts</strong><br>
<span style="color:#334155;font-size:12px">Current price, list price, discount amount and percent, plus buy-more-pay-less offers.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #FECACA;border-left:none;vertical-align:top">
<strong style="color:#B91C1C;font-size:15px">🔢 EAN and medicine data</strong><br>
<span style="color:#334155;font-size:12px">EAN barcode, active ingredient, strength, prescription label and health ministry registration.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #FECACA;border-left:none;vertical-align:top">
<strong style="color:#B91C1C;font-size:15px">⚖️ Price per unit</strong><br>
<span style="color:#334155;font-size:12px">Compare pack sizes by price per tablet, capsule, gram or millilitre.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #FECACA;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<strong style="color:#B91C1C;font-size:15px">🔔 Change alerts</strong><br>
<span style="color:#334155;font-size:12px">Price drops, back in stock, out of stock, new and removed products between runs.</span>
</td>
</tr>
</table>

Quer saber o preço de remédios na Drogasil hoje e na semana que vem? Know what Drogasil charges, today and next week. This Actor reads the public store pages and returns one row per product with a stable product number, the EAN barcode and a link back to the page. Search by word, or start from a category or a product link. Anything the store does not publish is left out, never guessed.

### 👥 Who uses it

- **I sell on Mercado Livre, Amazon or Shopee** and need to reprice against Drogasil, matching products by EAN.
- **I run a pharma or consumer health brand** and need to see how my products are priced and discounted against competing brands.
- **I build a price comparison or health marketplace app** and need a fresh product and price feed for Brazil.
- **I analyse the Brazilian pharmacy market** and want brand versus generic price gaps per active ingredient and per tablet.

### 🚀 How it works

<table width="100%" style="margin-top:0;margin-bottom:0">
<tr>
<td style="padding:16px 14px;width:33%;background:#FEF2F2;border:1px solid #FECACA;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#DC2626;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#7F1D1D">Choose what to collect</span><br>
<span style="font-size:12px;color:#334155">Type search words such as dipirona, or paste category and product links from the store.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FEF2F2;border:1px solid #FECACA;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#DC2626;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#7F1D1D">Set your filters</span><br>
<span style="font-size:12px;color:#334155">Brands, a price range, on sale only, in stock only, or prescription label.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#FEF2F2;border:1px solid #FECACA;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#DC2626;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#7F1D1D">Export or schedule</span><br>
<span style="font-size:12px;color:#334155">Download Excel, CSV or JSON, or schedule the run and receive only what changed.</span>
</td>
</tr>
</table>

### 🔍 What does it do?

- Returns one row per product: name, brand, manufacturer, EAN, price, list price, discount, offers, pack size, strength and images.
- Searches the store by word and reads as many result pages as you ask for, or reads the products on a category page, or a single product link.
- Filters before saving, so you only pay for products that match.
- Adds the active ingredient, prescription label, refrigeration flag, therapeutic class and health ministry registration when the product page states them.
- Works out the price per unit only when the pack size is stated, for example per tablet or per millilitre.
- Keeps a named history of a list and marks every product as new, price drop, price increase, back in stock, out of stock, updated, unchanged or removed.
- Reads public store pages only. No account, no login and no personal data.

Availability means whether the store lists the product as available to order online. Stock at an individual store branch is not part of the public pages, and the store does not publish ratings or reviews.

### 💡 Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| Category or product links | array of URLs | No | Links from drogasil.com.br: a category, a brand page, a single product page or a search link. |
| Search words | array of strings | No | Words you would type in the store search box. Results are read page by page. |
| Brands | array of strings | No | Keep only these brands or manufacturers, for example Neo Química or Pantene. |
| Minimum price / Maximum price | number | No | Price range in reais. |
| In stock only | boolean | No | Keep only products listed as available to order online. |
| On sale only | boolean | No | Keep only products priced below their list price or with a store offer. |
| Prescription | select | No | Any product, prescription required, or no prescription required, from the label on the product page. |
| Include full description text | boolean | No | Adds the long description text to every row. |
| Track changes between runs | boolean | No | Compares with the previous run of the same monitor and labels every product. |
| Monitor name | string | No | Keeps the history of one monitor. Use one name per list you track. |
| Only save changes | boolean | No | Skips unchanged products so you pay for changes only. |
| Maximum products | integer | No | How many products to save in this run. Free plans are limited to 25. |

### 📊 Data table

| Field | Type | Description |
| --- | --- | --- |
| `productId`, `sku`, `ean`, `title`, `brand`, `manufacturer`, `url` | string | Product number, barcode, name, brand, maker and store page. |
| `price`, `currency` | number, string | Current price in reais. |
| `listPrice`, `discountAmount`, `discountPercent`, `onSale` | number, boolean | List price shown by the store and the discount against it. |
| `multiBuyQuantity`, `multiBuyUnitPrice`, `pixPrice`, `promotions` | number, array | Buy-more-pay-less offers, Pix price and offer labels, when the store shows them. |
| `availability`, `inStock` | string, boolean | Whether the product is listed as available to order online. |
| `packText`, `packQuantity`, `packUnit` | string, number | Pack size as the store writes it, and its quantity and unit. |
| `pricePerUnit`, `pricePerUnitUnit` | number, string | Price per tablet, capsule, gram or millilitre, when the pack size is simple. |
| `strength`, `activeIngredient`, `activeIngredients` | string, array | Dose and active ingredients named on the product page. |
| `prescriptionRequired`, `prescriptionLabel` | boolean, string | The store's prescription label and what it means. |
| `requiresRefrigeration`, `healthMinistryRegistration`, `therapeuticClass`, `therapeuticClassCode`, `productGroup` | various | Regulatory and classification details, when stated. |
| `isMarketplaceSeller`, `seller`, `variantCount` | boolean, string, number | Seller details and number of pack variants, when shown. |
| `categories`, `categoryPath`, `imageUrl`, `images`, `highlights`, `description`, `leafletUrl` | various | Where the product sits in the store, images, short highlights, optional long text and the leaflet link. |
| `changeType`, `changedFields`, `previousPrice`, `previousListPrice`, `priceChange`, `priceChangePercent`, `previousAvailability`, `firstSeenAt`, `changeDetectedAt`, `missingReason` | various | Change tracking fields, present when tracking is on. |
| `scrapedAt` | string | When the row was collected. |

### 🔄 Change tracking

Switch on "Track changes between runs", pick a monitor name and schedule the same input daily or weekly. The first run records a baseline and marks every product **new**. Later runs mark each product **price drop** or **price increase** (with the previous price and the percent change), **back in stock** or **out of stock**, **updated** (list price, offer or name change), **unchanged** or **removed**. A product is marked removed right away when its page is gone, and otherwise only after two complete runs in which it no longer appears. Turn on "Only save changes" to save and pay for changes only.

### 💰 Pricing

Pricing is pay per product row, with no subscription. EAN, medicine details, price per unit and change tracking are part of the row, with no extra charge. Empty runs cost nothing, and the discount tiers on your Apify plan apply automatically.

### ⭐ Enjoying Drogasil Scraper?

<table width="100%" style="display:table;width:100%">
<tr>
<td style="padding:20px 24px 14px;background:#FEF2F2;border:1px solid #FECACA;border-left:5px solid #DC2626;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#7F1D1D">Got a price list you can use straight away?</span><br>
<span style="font-size:14px;color:#334155">A rating takes 10 seconds and helps other pharma and retail teams find a reliable Drogasil price feed.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#DC2626;border:1px solid #FECACA;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/drogasil-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### ✨ Tips

- **Start with one search word.** Run 15 products, check the columns, then raise the limit.
- **Match by EAN.** The barcode is the cleanest key for joining Drogasil rows with your own catalogue or a marketplace feed.
- **Compare brand and generic.** Search an active ingredient and sort by price per unit.
- **Follow a shortlist.** Paste the product links you care about, switch on change tracking and schedule it daily.

### ❓ FAQ

##### Como consultar o preço de remédios na Drogasil?

Digite o nome do remédio, da marca ou do princípio ativo em "Search words", por exemplo dipirona, e rode o Actor. Você recebe preço, preço de lista, desconto, EAN e preço por comprimido em uma tabela que pode baixar em Excel, CSV ou JSON.

##### Which products can I collect?

Everything on the public store: medicines, vitamins and supplements, baby care, beauty, personal care and pet items. Search words can go as deep as you ask. A category link reads the first page the store shows for that category, so use search words for longer lists.

##### Can I get the active ingredient and prescription flag?

Yes. They are returned when the product page states them, together with the store's own prescription label. Products without that information simply have no value in those columns.

##### Como acompanhar queda de preço de um remédio?

Ligue "Track changes between runs", dê um nome ao monitor e agende a mesma execução todo dia ou toda semana. Cada produto vem marcado como novo, queda de preço, aumento de preço, voltou ao estoque, sem estoque, atualizado ou removido.

### 🔗 Other actors

- [Brazil Car Scraper: Carros Usados e Novos, FIPE Gap and Alerts](https://apify.com/getascraper/webmotors-vehicles-scraper) ↗ - Collect Brazilian car listings and track prices against the FIPE table.
- [Farmacias Guadalajara Scraper: Precio de Medicamentos y Ofertas](https://apify.com/getascraper/farmacias-guadalajara-scraper) ↗ - Compare Mexican pharmacy prices, offers and price per tablet.
- [N11 Scraper: Ürün Fiyat, İndirim & Satıcı | Price Intelligence](https://apify.com/getascraper/n11-product-search-intelligence-scraper) ↗ - Track Turkish marketplace prices, discounts and sellers.

# Changelog

This Actor's version history is a separate document: https://apify.com/getascraper/drogasil-scraper/changelog.md

# Actor input Schema

## `startUrls` (type: `array`):

Public links from drogasil.com.br: a category (for example /medicamentos/medicamentos/dor-e-febre.html), a brand page, a single product page or a search link. A category link lists the first page of that category; use search words for longer lists.

## `searchTerms` (type: `array`):

Words you would type in the Drogasil search box, for example dipirona, vitamina c or protetor solar. Results are read page by page in the order the store returns them.

## `brands` (type: `array`):

Keep only products from these brands or manufacturers, for example Neo Química or Pantene. Leave empty to keep every brand.

## `minPrice` (type: `number`):

Keep products priced at or above this amount in reais. Leave empty for no minimum.

## `maxPrice` (type: `number`):

Keep products priced at or below this amount in reais. Leave empty for no maximum.

## `inStockOnly` (type: `boolean`):

Keep only products the store lists as available to order online.

## `onSaleOnly` (type: `boolean`):

Keep only products with a lower price than their list price, or with a store offer such as buy more, pay less.

## `prescription` (type: `string`):

Filter by the prescription label the store shows on the product page. Products without a stated label are left out when you pick required or not required.

## `includeDescription` (type: `boolean`):

Adds the long product description (indications, how to use, warnings) as plain text to every row. Rows get much longer.

## `monitor` (type: `boolean`):

Compares each product with the previous run of the same monitor and labels it new, price drop, price increase, back in stock, out of stock, updated or removed.

## `monitorName` (type: `string`):

Name that keeps the history of one monitor. Use a different name for each set of links, words and filters you track.

## `onlyChanges` (type: `boolean`):

Save only products that are new, changed or removed since the previous run. Unchanged products are skipped and not charged.

## `maxItems` (type: `integer`):

Highest number of products to save in this run. Free plans are limited to 25.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.drogasil.com.br/medicamentos/medicamentos/dor-e-febre.html"
    }
  ],
  "searchTerms": [],
  "brands": [],
  "inStockOnly": false,
  "onSaleOnly": false,
  "prescription": "any",
  "includeDescription": false,
  "monitor": false,
  "monitorName": "default",
  "onlyChanges": false,
  "maxItems": 15
}
```

# Actor output Schema

## `products` (type: `string`):

No description

## `runSummary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.drogasil.com.br/medicamentos/medicamentos/dor-e-febre.html"
        }
    ],
    "searchTerms": [],
    "brands": [],
    "inStockOnly": false,
    "onSaleOnly": false,
    "prescription": "any",
    "includeDescription": false,
    "monitor": false,
    "monitorName": "default",
    "onlyChanges": false,
    "maxItems": 15
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/drogasil-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://www.drogasil.com.br/medicamentos/medicamentos/dor-e-febre.html" }],
    "searchTerms": [],
    "brands": [],
    "inStockOnly": False,
    "onSaleOnly": False,
    "prescription": "any",
    "includeDescription": False,
    "monitor": False,
    "monitorName": "default",
    "onlyChanges": False,
    "maxItems": 15,
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/drogasil-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.drogasil.com.br/medicamentos/medicamentos/dor-e-febre.html"
    }
  ],
  "searchTerms": [],
  "brands": [],
  "inStockOnly": false,
  "onSaleOnly": false,
  "prescription": "any",
  "includeDescription": false,
  "monitor": false,
  "monitorName": "default",
  "onlyChanges": false,
  "maxItems": 15
}' |
apify call getascraper/drogasil-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,getascraper/drogasil-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ALvOITkIatipYeFGg/builds/MrJBybdCumeRj951j/openapi.json
