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

Extrae productos de farmacia y cuidado personal de FarmaPlus Argentina. Obtén precios, stock, SKU, EAN, marcas, ofertas y URLs en Dataset, JSON, CSV, Excel o API.

- **URL**: https://apify.com/latinamericadata/farmaplus-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/platform/actors/running/actors-in-store#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

## FarmaPlus Argentina Scraper - Precios, Ofertas y Stock

Extraé productos de FarmaPlus 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 FarmaPlus está preparado para búsquedas como **FarmaPlus Argentina API**, **scraper FarmaPlus**, **precios FarmaPlus**, **ofertas FarmaPlus**, **stock de dermocosmética**, **salud y farmacia**, **suplementos y nutrición** y **comparador de precios de farmacia**. La búsqueda predeterminada es `crema`, pero también podés consultar marcas o recorrer categorías completas.

Es una herramienta independiente: no es una API oficial de FarmaPlus Argentina ni está afiliada, respaldada u operada por FarmaPlus. 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 FarmaPlus 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 FarmaPlus Argentina.
- Seguimiento de ofertas, descuentos y precios de lista.
- Comparación de marcas de dermocosmética, cuidado personal, suplementos, fragancias y maternidad.
- 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 FarmaPlus 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. |

El Dataset contiene únicamente filas `success`. Los estados operativos `no_results`, `blocked` y `failed` quedan en `RUN_SUMMARY` y en los logs para facilitar controles automáticos sin convertirlos en resultados facturables.

### Ejemplo de entrada

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

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

```json
{
  "categories": ["https://www.farmaplus.com.ar/dermocosmetica"],
  "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": "FarmaPlus Argentina",
  "input_type": "search",
  "input_value": "crema",
  "page": 1,
  "rank": 1,
  "product_id": "234384",
  "sku_id": "234384",
  "ean": "7790000000000",
  "product_name": "Crema hidratante x 400 ml",
  "sku_name": "Crema hidratante x 400 ml",
  "brand": "Marca de ejemplo",
  "category": "Dermocosmética",
  "price": 6700,
  "list_price": 7600,
  "discount_percent": 11.84,
  "currency": "ARS",
  "available": true,
  "available_quantity": 100,
  "seller": "FarmaPlus",
  "source_url": "https://www.farmaplus.com.ar/crema-producto-de-ejemplo/p",
  "request_url": "https://www.farmaplus.com.ar/api/catalog_system/pub/products/search?ft=crema",
  "scraped_at": "2026-07-18T12:00:00Z",
  "error_message": null
}
```

### Inicio rápido

1. Abrí el Actor en Apify.
2. Cargá cremas, suplementos, productos de cuidado personal o marcas 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 | `["crema"]` | Productos de farmacia, dermocosmética, 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 usa **Pay per event + usage** con una tarifa plana. Apify muestra el máximo de cargo antes de ejecutar y el Actor reduce `maxItems` para respetarlo.

| Concepto | Cuándo se cobra | Precio |
|---|---|---:|
| `result` | Por cada producto/SKU guardado en el Dataset predeterminado mediante `apify-default-dataset-item`. Es el evento principal. | USD 0.003 por resultado (USD 3.00 cada 1.000) |
| Actor start | Al iniciar la ejecución; Apify lo gestiona con `apify-actor-start` y bonifica los primeros 5 segundos de uso. | USD 0.00005 |

`withDetails` agrega campos, pero no cambia el precio por resultado. Las ejecuciones sin productos dejan el Dataset vacío: `no_results`, `blocked` y `failed` se registran únicamente en `RUN_SUMMARY` y logs, por lo que no generan un evento `result`. El cargo de inicio y el uso de la plataforma Apify quedan 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 FarmaPlus 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 FarmaPlus.

### Preguntas frecuentes

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

No. Consulta el catálogo público de FarmaPlus 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?

El Dataset queda vacío y `RUN_SUMMARY` registra `no_results`. No se cobra un evento `result`; 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 FarmaPlus Argentina. La disponibilidad, los precios, las promociones y las condiciones de entrega pueden variar por ubicación, especialmente fuera de CABA y GBA, 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 FarmaPlus Argentina. “FarmaPlus” 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 `dermocosmetica` o URLs completas de categorías de FarmaPlus. 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": [
    "crema"
  ],
  "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/farmaplus-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/farmaplus-argentina").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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/farmaplus-argentina --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=latinamericadata/farmaplus-argentina",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/bYba2uJrm69EPMcdL/builds/OFPW5FHT8qaILvvsr/openapi.json
