# Farmacias del Ahorro Product & Price Scraper (`latinamericadata/farmacias-del-ahorro-mexico`) Actor

Extrae productos de Farmacias del Ahorro con SKU, marca, precio, stock y receta. Scraper y API para monitoreo farmacéutico y análisis de catálogo. Exporta en JSON, CSV o Excel e intégralo por API, webhooks y automatizaciones.

- **URL**: https://apify.com/latinamericadata/farmacias-del-ahorro-mexico.md
- **Developed by:** [Latin America Data](https://apify.com/latinamericadata) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 producto entregados

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

El **Farmacias del Ahorro Scraper** convierte datos públicos de [Farmacias del Ahorro](https://www.fahorro.com/) en registros estructurados y listos para análisis. Organiza búsquedas de medicamentos, cuidado personal y bienestar para analizar precios, stock, marca, receta, marketplace y cobertura de catálogo.

Esta es una herramienta independiente y no oficial de **Latin America Data**. No está afiliada, patrocinada ni operada por Farmacias del Ahorro.

### Qué puedes extraer con Farmacias del Ahorro Scraper

- ID de producto, SKU, título, marca y categorías.
- Precio actual, precio anterior y moneda.
- Stock, requisito de receta, marca propia y marketplace.
- Imagen, posición, página y URL verificable.

Cada registro conserva `source_url` para comprobar la información. Los campos que la fuente no publique permanecen vacíos; el actor no inventa valores para completar el dataset.

### Casos de uso para datos de Farmacias del Ahorro

- Comparar precios de medicamentos y productos de cuidado personal.
- Monitorear stock, marcas propias y presencia de marketplace.
- Analizar surtido por categoría y condición de receta.
- Crear reportes de retail farmacéutico y alertas de disponibilidad.

### Qué preguntas puede responder este dataset

La señal de receta, la marca propia y el stock permiten estudiar el catálogo farmacéutico más allá del precio. Puedes separar productos regulados, identificar alternativas de marca y medir disponibilidad por consulta. Para análisis responsables, usa estos datos como referencia comercial y valida siempre información médica o de dispensación en la fuente oficial.

### Cómo usar Farmacias del Ahorro Scraper

1. Abre la pestaña **Input** e indica la búsqueda, los filtros o las URLs necesarias.
2. Para una primera validación, usa un límite pequeño y revisa el formato de salida.
3. Pulsa **Start** y espera a que termine la ejecución en Apify Console.
4. Abre el dataset para revisar, descargar o integrar los resultados.

#### Principales campos de entrada

| Campo | Nombre en el formulario | Para qué sirve | Valor inicial |
| --- | --- | --- | --- |
| `query` | Término de búsqueda | Producto, marca, categoría, cargo o palabra clave que deseas buscar en Farmacias del Ahorro. | `paracetamol` |
| `pageSize` | Resultados por página | Cantidad solicitada por página, dentro del rango admitido por la fuente. | `50` |
| `startPage` | Página inicial | Página desde la que comenzará la extracción. | `1` |
| `maxItems` | Máximo de resultados | Límite opcional de resultados. Déjalo vacío para continuar mientras existan registros nuevos. | opcional |
| `maxPages` | Máximo de páginas | Límite opcional de páginas. Déjalo vacío para recorrer toda la búsqueda disponible. | opcional |

Los límites de resultados y páginas sólo restringen la extracción cuando reciben un valor. Si quedan vacíos, el actor continúa mientras la fuente entregue registros nuevos dentro del alcance solicitado.

#### Ejemplo de entrada

```json
{
  "query": "paracetamol"
}
```

### Datos de salida de Farmacias del Ahorro Scraper

- Producto: `product_id`, `sku`, `title`, `brand` y `categories`.
- Precio: `price`, `previous_price` y `currency`.
- Farmacia: `stock`, `prescription_required`, `own_brand` y `marketplace`.
- Auditoría: `source_url`, `search_url`, `page`, `rank` y `scraped_at`.

Una fila usa `status=success` cuando contiene un producto entregado. Una consulta válida sin coincidencias puede devolver `no_results`; una indisponibilidad controlada se identifica como `blocked` o `failed`. Estas filas operativas mantienen la ejecución auditable y no se cobran como resultado.

El dataset puede descargarse como **JSON, CSV o Excel**. También puedes consumir los registros desde la API de Apify sin cambiar el formato definido por el actor.

### API, integraciones y automatización para Farmacias del Ahorro

Ejecuta este web scraper desde Python, JavaScript, cURL, MCP o la API de Apify. Para seguimiento continuo, guarda el input como tarea y conecta horarios o webhooks con tu base de datos, hoja de cálculo, CRM, BI o flujo de alertas.

### Precio de Farmacias del Ahorro Scraper

El precio actual es **USD 0.003 por producto entregado**; 1.000 resultados exitosos representan USD 3.00 en eventos de resultado. Las filas `no_results`, `blocked` y `failed` no se cobran. El usuario asume el uso de la plataforma y puede definir límites para controlar volumen y costo.

### Preguntas frecuentes sobre Farmacias del Ahorro

#### ¿El dataset indica si un producto requiere receta?

Sí, cuando la fuente lo publica el campo `prescription_required` permite distinguir esa condición.

#### ¿Puedo usarlo para comparar precios farmacéuticos?

Sí. Ejecuta las mismas consultas en diferentes fechas y compara `price`, `previous_price` y `stock`.

### Otros scrapers y APIs de datos de México

- [Farmacias Guadalajara Product & Price Scraper](https://apify.com/latinamericadata/farmacias-guadalajara-mexico)
- [Farmacias Similares Product & Price Scraper](https://apify.com/latinamericadata/farmacias-similares-mexico)
- [Chedraui Mexico Product & Price Data Scraper](https://apify.com/latinamericadata/chedraui-mexico)

### Uso responsable

Usa los datos con una finalidad legítima, respeta la legislación y los términos aplicables, y valida decisiones importantes en los enlaces de origen. Las marcas y nombres comerciales pertenecen a sus respectivos titulares.

# Actor input Schema

## `query` (type: `string`):

Producto, marca, categoría, cargo o palabra clave que deseas buscar en Farmacias del Ahorro.

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

Límite opcional de resultados. Déjalo vacío para continuar mientras existan registros nuevos.

## `maxPages` (type: `integer`):

Límite opcional de páginas. Déjalo vacío para recorrer toda la búsqueda disponible.

## `startPage` (type: `integer`):

Página desde la que comenzará la extracción.

## `pageSize` (type: `integer`):

Cantidad solicitada por página, dentro del rango admitido por la fuente.

## `requestTimeoutSecs` (type: `integer`):

Segundos máximos de espera antes de considerar fallida una solicitud.

## `retries` (type: `integer`):

Cantidad de intentos controlados ante una indisponibilidad temporal.

## `failOnNoResults` (type: `boolean`):

Si se activa, una búsqueda válida sin coincidencias finaliza como error.

## Actor input object example

```json
{
  "query": "paracetamol",
  "startPage": 1,
  "pageSize": 50,
  "requestTimeoutSecs": 45,
  "retries": 3,
  "failOnNoResults": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("latinamericadata/farmacias-del-ahorro-mexico").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("latinamericadata/farmacias-del-ahorro-mexico").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 '{}' |
apify call latinamericadata/farmacias-del-ahorro-mexico --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,latinamericadata/farmacias-del-ahorro-mexico"
        }
    }
}
```

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/WCOnUlhBP0tJUzUdV/builds/0lrntkroHrwC2PnRc/openapi.json
