# Farmacity Argentina Scraper - Precios, Ofertas y Stock (`latinamericadata/farmacity-argentina`) Actor

Extrae productos de Farmacity Argentina por búsqueda o categoría. Obtén precios, ofertas, stock, SKU, EAN, marcas y URLs en Dataset, JSON, CSV, Excel o API.

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

## Pricing

from $3.00 / 1,000 results

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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Farmacity Argentina Scraper - Precios, Ofertas y Stock

Extraé productos de Farmacity Argentina por búsqueda o categoría y obtené precios, ofertas, stock, SKU, EAN, marcas, vendedores y URLs auditables. El Actor guarda los resultados en un Dataset de Apify listo para descargar como JSON, CSV o Excel, o para consumir desde una API.

Este scraper Farmacity está preparado para búsquedas como **Farmacity Argentina API**, **precios Farmacity**, **ofertas de farmacia**, **stock de dermocosmética**, **productos de cuidado personal** y **comparador de precios de farmacia**. Podés combinar palabras clave con categorías para relevar productos, marcas o secciones completas del catálogo.

Es una herramienta independiente: no es una API oficial de Farmacity Argentina ni está afiliada, respaldada u operada por Farmacity. Extrae información disponible públicamente y no accede a cuentas, recetas, historiales ni datos privados.

### Para qué sirve este Actor

El Actor automatiza la consulta del catálogo público de Farmacity Argentina y normaliza cada combinación de SKU y vendedor en una fila. Convierte una búsqueda manual de farmacia, belleza o cuidado personal en un flujo repetible, exportable y auditable.

| Objetivo | Cómo ayuda el Actor |
|---|---|
| Buscar productos | Consulta productos, marcas o necesidades mediante `searchTerms`. |
| Recorrer categorías | Acepta IDs, rutas o URLs de categoría mediante `categories`. |
| Controlar el alcance | Limita resultados y páginas con `maxItems` y `maxPages`. |
| Auditar los datos | Conserva `source_url`, `request_url` y `scraped_at`. |
| Obtener más contexto | Con `withDetails` incorpora descripción, especificaciones, promociones y cuotas. |

### Casos de uso

- Monitoreo periódico de precios y stock en Farmacity Argentina.
- Seguimiento de ofertas, descuentos y precios de lista.
- Comparación de marcas de dermocosmética, cuidado capilar, higiene y belleza.
- Análisis de disponibilidad por SKU y vendedor.
- Investigación de surtido para laboratorios, distribuidores y equipos de retail.
- Alimentación de tableros, alertas, agentes y procesos ETL.
- Construcción de una capa de Farmacity Argentina API para procesos internos, sin presentarla como una API oficial.

### Qué datos entrega

Cada fila exitosa representa una combinación de SKU y vendedor.

| Grupo | Campos principales | Contenido |
|---|---|---|
| Estado y origen | `status`, `country`, `source`, `input_type`, `input_value` | Estado técnico y objetivo que originó la fila. |
| Identificación | `product_id`, `sku_id`, `ean`, `product_name`, `sku_name` | IDs, EAN y nombres del producto. |
| Clasificación | `brand`, `category`, `categories` | Marca y jerarquía de categorías. |
| Precio y oferta | `price`, `list_price`, `discount_percent`, `currency` | Precio actual, precio de lista, descuento calculado y moneda. |
| Stock y vendedor | `available`, `available_quantity`, `seller_id`, `seller` | Disponibilidad informada y vendedor. |
| Detalles opcionales | `installment_count`, `installment_value`, `promotions`, `description`, `specifications` | Cuotas, promociones y contenido ampliado cuando `withDetails` está activo. |
| Evidencia | `image_url`, `source_url`, `request_url`, `scraped_at` | Imagen, URLs de origen y fecha de extracción. |

Las filas del Dataset tienen estado `success`. Los estados operativos `no_results`, `blocked` y `failed` se registran en `RUN_SUMMARY` y en los logs, lo que simplifica integraciones y controles automáticos sin crear resultados artificiales.

### Ejemplo de entrada

```json
{
  "searchTerms": ["shampoo"],
  "maxItems": 100,
  "withDetails": true
}
```

También podés recorrer una sección:

```json
{
  "categories": ["https://www.farmacity.com/cuidado-capilar"],
  "maxPages": 2,
  "withDetails": false
}
```

Si omitís `maxItems` y `maxPages`, el Actor continúa hasta completar el alcance seleccionado.

### Resultado de ejemplo

Ejemplo simplificado con valores ilustrativos:

```json
{
  "status": "success",
  "country": "AR",
  "source": "Farmacity Argentina",
  "input_type": "search",
  "input_value": "shampoo",
  "page": 1,
  "rank": 1,
  "product_id": "234384",
  "sku_id": "234384",
  "ean": "7790000000000",
  "product_name": "Shampoo hidratante x 400 ml",
  "sku_name": "Shampoo hidratante x 400 ml",
  "brand": "Marca de ejemplo",
  "category": "Cuidado Capilar",
  "price": 6700,
  "list_price": 7600,
  "discount_percent": 11.84,
  "currency": "ARS",
  "available": true,
  "available_quantity": 100,
  "seller": "Farmacity",
  "source_url": "https://www.farmacity.com/shampoo-producto-de-ejemplo/p",
  "request_url": "https://www.farmacity.com/api/catalog_system/pub/products/search?ft=shampoo",
  "scraped_at": "2026-07-18T12:00:00Z",
  "error_message": null
}
```

### Inicio rápido

1. Abrí el Actor en Apify.
2. Cargá productos, marcas o necesidades en `searchTerms`, o indicá categorías en `categories`.
3. Definí `maxItems` o `maxPages` si querés acotar la ejecución.
4. Activá `withDetails` si necesitás descripciones, especificaciones, promociones y cuotas.
5. Ejecutá el Actor y revisá el Dataset o exportalo como JSON, CSV o Excel.

### Input

| Campo | Tipo | Valor predeterminado | Descripción |
|---|---|---|---|
| `searchTerms` | array de strings | `["shampoo"]` | Productos, marcas o palabras clave. |
| `categories` | array de strings | — | IDs, rutas o URLs completas de categoría. |
| `maxItems` | integer | sin límite | Máximo total de filas de SKU y vendedor. |
| `maxPages` | integer | sin límite | Máximo de páginas por búsqueda o categoría. |
| `startPage` | integer | `1` | Primera página solicitada a VTEX. |
| `pageSize` | integer | `50` | Productos solicitados por página. |
| `sortOrder` | string | `OrderByNameASC` | Orden determinista de los resultados. |
| `withDetails` | boolean | `true` | Agrega descripción, especificaciones, promociones y cuotas. |
| `includeUnavailable` | boolean | `false` | Incluye SKU y vendedores sin stock. |
| `requestDelayMillis` | integer | `100` | Demora entre solicitudes, en milisegundos. |
| `requestTimeoutSecs` | integer | `45` | Tiempo máximo de espera por solicitud. |
| `retries` | integer | `3` | Intentos máximos ante fallas transitorias. |
| `failOnNoResults` | boolean | `false` | Hace fallar la ejecución en vez de devolver `no_results`. |

### Precios

El Actor utiliza pago por evento con una tarifa plana y predecible.

| Evento | Precio y cuándo se cobra |
|---|---|
| `apify-default-dataset-item` (`result`, evento principal) | USD 0.003 por cada producto o SKU guardado en el Dataset predeterminado (USD 3.00 cada 1.000 resultados). |
| Actor start | USD 0.00005 al iniciar la ejecución. Es un evento sintético administrado por Apify; los primeros 5 segundos de uso no generan costo de plataforma. |

`result` es el evento principal que Apify usa para mostrar y comunicar el precio. `withDetails` entrega más campos pero mantiene el mismo precio por resultado. Las filas operativas con estado `no_results`, `blocked` o `failed` no se guardan ni se cobran como `result`: el diagnóstico queda en `RUN_SUMMARY` y en los logs. Una ejecución sin resultados puede conservar el cargo de Actor start.

Si el usuario define un cargo máximo para la ejecución, el Actor reduce preventivamente `maxItems` de acuerdo con la tarifa de USD 0.003 y respeta el límite más bajo entre ese cálculo y el `maxItems` solicitado. Si el límite no alcanza para un resultado, finaliza sin extraer ni guardar datos y registra `charge_limit_reached` con `results: 0` en `RUN_SUMMARY`. El uso de la plataforma Apify queda a cargo del usuario.

### API, agentes y exportaciones

Podés ejecutar el Actor desde Apify Console, programaciones, REST API, clientes de JavaScript o Python, MCP y flujos con agentes. El Dataset se consulta por API o se descarga como JSON, CSV y Excel.

En automatizaciones, esta salida funciona como una Farmacity Argentina API orientada a productos, precios y stock: enviás el input, esperás la ejecución y consumís filas normalizadas. Es una interfaz creada por este Actor, no una API oficial de Farmacity.

### Preguntas frecuentes

#### ¿Necesita inicio de sesión?

No. Consulta el catálogo público de Farmacity y no accede a cuentas, datos clínicos, recetas ni información privada.

#### ¿Puedo buscar por palabra clave y por categoría?

Sí. Usá `searchTerms` para productos, marcas o palabras clave y `categories` para IDs, rutas o URLs de categoría.

#### ¿Cómo evita duplicados?

Usa paginación determinista y deduplica cada combinación de SKU y vendedor antes de guardar o cobrar el resultado.

#### ¿Qué pasa si no encuentra productos?

No agrega una fila artificial al Dataset. Deja el Dataset sin resultados y registra el estado `no_results` en `RUN_SUMMARY` y en los logs. Si activás `failOnNoResults`, la ejecución falla en ese escenario.

#### ¿Los precios y el stock son en tiempo real?

Son una captura del catálogo al momento indicado por `scraped_at`. Pueden cambiar después de la extracción y variar según ubicación, método de entrega o condiciones comerciales.

### Fuente, límites y uso responsable

La fuente es el catálogo público de Farmacity Argentina. La disponibilidad, los precios, las promociones y las cuotas pueden variar por ubicación y cambiar sin aviso. El sitio también puede modificar su contrato público, límites o estructura.

El Actor incorpora una demora configurable entre solicitudes. Usalo con una frecuencia razonable, verificá los datos antes de tomar decisiones y respetá los términos aplicables, la normativa vigente y los derechos sobre marcas y contenidos. No debe utilizarse para obtener ni inferir información médica personal.

### Independencia

Este Actor es una herramienta de datos independiente. No está afiliado, respaldado, autorizado ni operado por Farmacity Argentina. “Farmacity” y las demás marcas mencionadas pertenecen a sus respectivos titulares.

# Actor input Schema

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

Uno o más productos, marcas o palabras clave para buscar.

## `categories` (type: `array`):

IDs de categoría VTEX, rutas como `cuidado-capilar` o URLs completas de categorías de Farmacity. Este campo es opcional.

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

Cantidad máxima opcional de registros de SKU y vendedor que se guardarán entre todos los objetivos.

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

Límite opcional de páginas para cada búsqueda o categoría. Si lo omitís, la paginación continúa hasta agotar los resultados.

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

Primera página de VTEX que se solicitará, comenzando desde 1.

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

Cantidad de productos solicitados a VTEX por página. VTEX admite hasta 50.

## `sortOrder` (type: `string`):

Un orden determinista evita productos duplicados entre páginas desplazadas de VTEX.

## `withDetails` (type: `boolean`):

Incluye descripción, especificaciones, promociones y datos de cuotas. El precio por resultado sigue siendo USD 0.003.

## `includeUnavailable` (type: `boolean`):

Incluye SKU y vendedores sin stock cuando esta opción está activada.

## `requestDelayMillis` (type: `integer`):

Demora respetuosa entre solicitudes de páginas de VTEX, expresada en milisegundos.

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

Cantidad máxima de segundos de espera para cada solicitud al catálogo.

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

Cantidad máxima de intentos ante una falla transitoria en una solicitud al catálogo.

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

Hace fallar la ejecución cuando no hay coincidencias. En caso contrario, el Dataset queda vacío y el estado `no_results` se guarda en `RUN_SUMMARY`.

## Actor input object example

```json
{
  "searchTerms": [
    "shampoo"
  ],
  "maxItems": 100,
  "startPage": 1,
  "pageSize": 50,
  "sortOrder": "OrderByNameASC",
  "withDetails": true,
  "includeUnavailable": false,
  "requestDelayMillis": 100,
  "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 = {
    "maxItems": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("latinamericadata/farmacity-argentina").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 = { "maxItems": 100 }

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

```

## MCP server setup

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

```

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/5d34M0Gp35kuUjehj/builds/wqvpXqebtwshao8lJ/openapi.json
