# Allegro Product Scraper (`axlymxp/allegro-product-scraper`) Actor

Scrape Allegro.pl offers by keyword, category or URL — price, condition, seller rating, delivery, images and category. Turn on full detail for parameters, description, stock and the seller's company name, NIP/VAT tax id and city. Clean JSON for Sheets or CRM. Pay only for results.

- **URL**: https://apify.com/axlymxp/allegro-product-scraper.md
- **Developed by:** [axly](https://apify.com/axlymxp) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 dataset items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Allegro Product Scraper

Extract structured product data from **[Allegro.pl](https://allegro.pl)** — Poland's
largest online marketplace (20M+ buyers) — by keyword, category or offer URL. Get
prices, seller ratings, condition, delivery, images and category on every offer,
and optionally enrich each one with its **full detail page**: parameters,
description, stock, breadcrumbs, brand, location and the **seller's business
identity** (company name, NIP/VAT tax id and registered city).

No login, OAuth or proxy setup — Allegro's DataDome anti-bot is handled for you.
Output is clean JSON/CSV/Excel, ready for Google Sheets, BI tools or your CRM.

### Who it's for

- **Resellers & e-commerce sellers** — track competitor prices, monitor condition
  and delivery, and benchmark your own listings.
- **Brands & distributors** — see who sells your products, at what price, and pull
  the seller's registered company + NIP for MAP and channel checks.
- **Market researchers & analysts** — build category price indexes and assortment
  snapshots across Poland's biggest marketplace.
- **Lead-gen & sales teams** — turn active sellers into B2B prospects with company
  name, tax id (NIP/VAT) and city (see also the *Allegro Seller Leads Scraper*).

### What you get (output fields)

| Field | Type | Description |
|---|---|---|
| `offer_id` | string | Allegro offer id |
| `product_id` | string | Product UUID (when present) |
| `title` | string | Offer title |
| `url` | string | Canonical offer URL |
| `price` | string | Price amount |
| `currency` | string | Currency (PLN) |
| `price_with_delivery` | string | Price incl. delivery, when shown |
| `rating` | number | Average product rating |
| `rating_count` | number | Number of reviews |
| `seller_login` | string | Seller username |
| `seller_name` | string | Seller display name |
| `super_seller` | boolean | Allegro "Super Sprzedawca" status |
| `delivery` | string | Delivery/shipping label |
| `popularity` | string | Popularity badge (e.g. "hit") |
| `thumbnail` | string | Listing image URL |
| `category_id` | string | Navigation category id |
| `sponsored` / `promoted` / `featured` | boolean | Ad flags |
| `source_type` / `source_value` | string | Which query/category/URL produced the row |
| `scraped_at` | string | ISO-8601 timestamp |

**With `fullDetail` enabled, each row also includes:**

| Field | Type | Description |
|---|---|---|
| `name_full` | string | Full product name from the detail page |
| `price_formatted` | string | Formatted price string |
| `stock_available` | number | Units available |
| `brand` | string | Brand name |
| `category_name` | string | Category name |
| `breadcrumbs` | array | Category breadcrumb trail |
| `location_city` / `location_country` | string | Item location |
| `images` | array | All product image URLs |
| `parameters` | array | Full spec parameters (`{name, values}`) |
| `description` | string | Plain-text product description |
| `seller_company_name` | string | Registered company name |
| `seller_tax_id` | string | **Seller NIP / EU VAT id** |
| `seller_company_city` | string | Registered company city |
| `seller_ratings` | object | Seller rating summary |
| `seo_title` | string | Offer SEO title |

### High-value use cases

1. **Competitor price monitoring** — schedule a keyword or category run daily and
   push price changes into Sheets or a dashboard.
2. **MAP / brand protection** — find every seller of your product and capture their
   registered company + NIP to enforce minimum advertised price.
3. **Assortment & catalog building** — pull full parameters, images and
   descriptions to seed a product feed or PIM.
4. **Market sizing** — measure how many offers, sellers and price bands exist for a
   category in Poland.
5. **Sales prospecting** — identify active business sellers and enrich them with
   company/tax id for outreach.

### Input parameters

| Field | Type | Default | Description |
|---|---|---|---|
| `searchQueries` | array | `["laptop"]` | Keywords to search |
| `categoryUrls` | array | `[]` | Category pages/slugs to browse (no keyword) |
| `offerUrls` | array | `[]` | Direct offer URLs/ids (full detail) |
| `fullDetail` | boolean | `false` | Enrich each offer from its detail page |
| `sort` | enum | `relevance` | `relevance`, `price_asc`, `price_desc`, `newest` |
| `condition` | enum | `any` | `any`, `new`, `used` |
| `minPrice` / `maxPrice` | integer | — | Price range in PLN |
| `includeSponsored` | boolean | `true` | Include sponsored/promoted offers |
| `maxItems` | integer | `100` | Stop after this many offers |
| `maxPagesPerQuery` | integer | `100` | Max listing pages per query (~60/page) |

At least one of `searchQueries`, `categoryUrls` or `offerUrls` is required.

#### Example input

```json
{
    "searchQueries": ["ekspres do kawy", "drukarka laserowa"],
    "condition": "new",
    "minPrice": 200,
    "sort": "price_asc",
    "fullDetail": true,
    "maxItems": 200
}
```

#### Example output row (full detail)

```json
{
    "offer_id": "18567803358",
    "title": "Drukarka wielofunkcyjna laserowa (mono) HP LaserJet M234dw",
    "url": "https://allegro.pl/oferta/18567803358",
    "price": "554.00",
    "currency": "PLN",
    "rating": 4.9,
    "rating_count": 51,
    "seller_login": "komtek",
    "super_seller": true,
    "brand": "HP",
    "location_city": "Kraków",
    "seller_company_name": "KOMTEK KONRAD WAJDA",
    "seller_tax_id": "677-172-96-99",
    "seller_company_city": "Kraków",
    "parameters": [{ "name": "Stan", "values": ["Nowy"] }],
    "detail_scraped": true,
    "scraped_at": "2026-08-28T10:00:00+00:00"
}
```

### Scheduling & integrations

- **Schedule** runs (hourly/daily) from the Apify Console to track prices over time.
- **Webhooks** fire on run completion — push new data to your app, Make or Zapier.
- **Export** to JSON, CSV, Excel or feed the Apify **dataset API** into Google
  Sheets, BigQuery, S3 or a database.

### Use from an AI agent (MCP)

This Actor is callable from AI assistants via the Apify MCP server, so an LLM agent
can search Allegro and pull structured offers on demand. Point your MCP client at
`https://mcp.apify.com` and call `allegro-product-scraper` with the same input.

### FAQ

**Do I need a proxy or an Allegro account?** No. The Actor handles Allegro's
DataDome anti-bot and location automatically.

**How many results can I get?** Allegro caps a single listing at ~6,000 offers
(100 pages). Split by category, price band or additional keywords to collect more.

**How fresh is the data?** It is scraped live at run time. Schedule the Actor to
keep a dataset current.

**Why enable full detail?** Listing rows are fast and cheap; full detail opens each
offer's page for parameters, description, all images, stock and the seller's
company/NIP — ideal for catalog building, MAP and lead-gen.

**Is scraping Allegro legal?** The Actor collects only publicly available data.
You are responsible for using the output in line with applicable laws (e.g. GDPR)
and Allegro's terms.

**A few rows are missing detail fields.** Occasionally an individual offer page
can't be fetched; the Actor skips enrichment for that offer and still returns its
listing row rather than failing the whole run.

# Actor input Schema

## `searchQueries` (type: `array`):

Keywords to search on Allegro.pl (Polish or any language), e.g. 'laptop', 'ekspres do kawy'. One search is run per keyword.

## `categoryUrls` (type: `array`):

Optional. Allegro category pages to browse without a keyword — a full URL (https://allegro.pl/kategoria/laptopy-491) or a bare slug (laptopy-491). Query strings are ignored; use the filter fields below.

## `offerUrls` (type: `array`):

Optional. Direct Allegro offer/product links (https://allegro.pl/oferta/15845849569) or bare offer IDs to scrape specific offers in full detail.

## `fullDetail` (type: `boolean`):

For each offer, also open its detail page to add all parameters, description, every image, stock, breadcrumbs, brand, location and the seller's business identity (company name, NIP/VAT tax id, city). Adds one request per offer (billed as a detail event).

## `sort` (type: `string`):

Result ordering for search / category modes.

## `condition` (type: `string`):

Filter by item condition.

## `minPrice` (type: `integer`):

Optional minimum price in PLN.

## `maxPrice` (type: `integer`):

Optional maximum price in PLN.

## `includeSponsored` (type: `boolean`):

Include sponsored/promoted offers (they are pinned to the top of every page). Turn off for organic results only.

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

Stop after collecting this many offers across all queries/categories. Allegro caps a single listing at ~6,000 offers (100 pages).

## `maxPagesPerQuery` (type: `integer`):

Maximum listing pages to walk per keyword/category (~60 offers per page). Allegro caps at 100 pages.

## Actor input object example

```json
{
  "searchQueries": [
    "laptop"
  ],
  "categoryUrls": [],
  "offerUrls": [],
  "fullDetail": false,
  "sort": "relevance",
  "condition": "any",
  "includeSponsored": true,
  "maxItems": 100,
  "maxPagesPerQuery": 100
}
```

# Actor output Schema

## `dataset` (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 = {
    "searchQueries": [
        "laptop"
    ],
    "categoryUrls": [],
    "offerUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("axlymxp/allegro-product-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 = {
    "searchQueries": ["laptop"],
    "categoryUrls": [],
    "offerUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("axlymxp/allegro-product-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 '{
  "searchQueries": [
    "laptop"
  ],
  "categoryUrls": [],
  "offerUrls": []
}' |
apify call axlymxp/allegro-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,axlymxp/allegro-product-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/MfNDgd2d81psyPJRS/builds/zYEW7JqSsJqvCBlyB/openapi.json
