# Allegro Product Listings Extractor (`kawsar/allegro-product-listings-extractor`) Actor

Allegro product scraper that turns any search keyword or listing URL into structured product data, so you can track prices, monitor sellers, and build product feeds without writing a line of code.

- **URL**: https://apify.com/kawsar/allegro-product-listings-extractor.md
- **Developed by:** [Kawsar](https://apify.com/kawsar) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 1,000 results

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?

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 Listings Extractor

Scrape product listings from [Allegro](https://allegro.pl), Poland's largest online marketplace, into a clean, structured dataset. Give the actor a search keyword or a full Allegro listing URL and it collects every matching offer with prices, sellers, ratings, delivery options and images. Export the results to JSON, CSV, Excel or Google Sheets, or pull them straight through the Apify API.

Built for price monitoring, competitor research, product feeds and market analysis on Allegro, with no browser to babysit and no code to write.

### Why use this actor

- **Keyword or URL input.** Search by a plain phrase like `gofrownica`, or paste any Allegro search, category or filtered result URL.
- **Full offer detail.** Price, currency, condition, seller, rating, review count, delivery and return flags, Smart badge, popularity, and every product image.
- **Automatic pagination.** The actor walks through result pages up to your limit and stops at the last available page on its own.
- **Clean, deduplicated data.** Sponsored offers that repeat across pages are removed by offer id, so each product appears once.
- **Ready for any workflow.** Structured output that drops into spreadsheets, BI dashboards, databases or your own scripts.

### What you can do with it

- Track competitor prices for a product or category over time
- See how offers rank for a keyword and who buys the sponsored slots
- Build and refresh product feeds for price comparison sites
- Monitor sellers, feedback scores and Smart delivery coverage in a niche
- Collect ratings and review counts for product research
- Feed live Allegro data into dashboards, alerts or machine learning pipelines

### Input

You can start from keywords, from full listing URLs, or both. At least one keyword or URL is required.

| Field | Type | Required | Default | Description |
|-------|------|----------|---------|-------------|
| `searchTerms` | array of strings | one of the two | `["gofrownica"]` | Keywords to search on Allegro, for example `gofrownica` or `laptop lenovo`. Each keyword runs as a separate Allegro search. |
| `searchUrls` | array of strings | one of the two | `[]` | Full Allegro listing URLs (search, category or filtered pages). Use these when you need category or filter pages instead of a plain keyword. |
| `maxItems` | integer | no | `40` | Maximum number of products to collect across all searches. Range 1 to 5000. |
| `requestTimeoutSecs` | integer | no | `45` | Per-request timeout in seconds. Range 10 to 120. |

#### Example input

```json
{
    "searchTerms": ["gofrownica", "ekspres do kawy"],
    "searchUrls": ["https://allegro.pl/listing?string=laptop"],
    "maxItems": 40,
    "requestTimeoutSecs": 45
}
```

#### How to get a listing URL

Open Allegro in your browser, type a search or pick a category, apply any filters you want (price range, condition, brand, delivery), then copy the full URL from the address bar and paste it into `searchUrls`. The actor keeps your filters and only manages the page number.

### Output

Each product is stored as one dataset item. Example:

```json
{
    "offerId": "18741150628",
    "offerTitle": "GOFROWNICA DUŻE GOFRY REGULACJA TEMPERATURY 2200W",
    "offerUrl": "https://allegro.pl/oferta/18741150628",
    "price": 149,
    "currency": "PLN",
    "condition": "Nowy",
    "sellerName": "Oficjalny sklep MalTec",
    "sellerLogin": "Oficjalny sklep MalTec",
    "sellerUrl": "https://allegro.pl/uzytkownik/MalTec",
    "superSeller": true,
    "sellerFeedbackPercent": 98.7,
    "rating": 4.94,
    "ratingCount": 373,
    "freeDelivery": false,
    "freeReturn": false,
    "smart": true,
    "sponsored": true,
    "promoted": true,
    "popularity": "591 osób kupiło ostatnio",
    "productOffersCount": 1,
    "vendor": "allegro",
    "mainImage": "https://a.allegroimg.com/s128/11d398/...",
    "images": ["https://a.allegroimg.com/s360/11d398/...", "..."],
    "imageCount": 8,
    "searchPhrase": "gofrownica",
    "position": 0,
    "sourceUrl": "https://allegro.pl/listing?string=gofrownica",
    "scrapedAt": "2026-08-23T10:00:00+00:00",
    "error": null
}
```

#### Output fields

| Field | Type | Description |
|-------|------|-------------|
| `offerId` | string | Allegro offer identifier |
| `offerTitle` | string | Product title |
| `offerUrl` | string | Direct link to the offer page |
| `price` | number | Listed price |
| `currency` | string | Price currency, usually PLN |
| `condition` | string | Item condition, for example Nowy (new) or Używany (used) |
| `sellerName` | string | Seller display name |
| `sellerLogin` | string | Seller login |
| `sellerUrl` | string | Link to the seller profile |
| `superSeller` | boolean | Whether the seller holds the Super Seller badge |
| `sellerFeedbackPercent` | number | Positive feedback percentage for the seller |
| `rating` | number | Average product rating (0 to 5) |
| `ratingCount` | number | Number of product reviews |
| `freeDelivery` | boolean | Free delivery flag |
| `freeReturn` | boolean | Free return flag |
| `smart` | boolean | Whether the offer is part of Allegro Smart |
| `sponsored` | boolean | Whether the offer is a paid placement |
| `promoted` | boolean | Whether the offer is promoted in the results |
| `popularity` | string | Popularity label, for example how many people bought it recently |
| `productOffersCount` | number | Number of offers grouped under the product |
| `vendor` | string | Vendor tag returned by Allegro |
| `mainImage` | string | Main product thumbnail |
| `images` | array | Full list of product image URLs |
| `imageCount` | number | Number of images |
| `searchPhrase` | string | Keyword that produced the result, when available |
| `position` | number | Position of the offer on its page |
| `sourceUrl` | string | Listing URL the offer came from |
| `scrapedAt` | string | UTC timestamp of extraction |
| `error` | string or null | Error message for the item, null on success |

### How to run

#### From the Apify Console

1. Open the actor and enter one or more keywords in `searchTerms`, or paste listing URLs in `searchUrls`.
2. Set `maxItems` to how many products you want (default 40).
3. Click **Start** and watch the dataset fill in the run log.
4. Open the **Dataset** tab and export as JSON, CSV, Excel, HTML or RSS, or read it through the API.

### How it works

The actor reads Allegro listing pages and extracts the structured product data that Allegro embeds in each page. It converts your keywords into search URLs, follows pages one by one, parses each product, removes duplicates by offer id, and pushes clean records to the dataset until it reaches your `maxItems` limit or the last page of results.

Allegro shows around 60 products per page. If you request more than a single page, the actor paginates automatically and respects the real last page reported by the site, so it never wastes runs on empty pages.

### Tips and limits

- **Fresh data.** Prices and stock change often. Re-run the actor whenever you need current numbers, or schedule it from the Apify Console.
- **Filtered searches.** For precise results, filter on Allegro first (price, brand, condition, delivery) and paste the resulting URL into `searchUrls`.
- **Deduplication.** Sponsored offers can show on several pages. The actor keeps the first occurrence of each offer id and skips the rest.
- **Polish text.** Titles, conditions and popularity labels come back in Polish, exactly as shown on Allegro.

### Frequently asked questions

**Can I scrape a whole category instead of a keyword?**
Yes. Open the category or filtered page on Allegro, copy the URL from the address bar, and paste it into `searchUrls`.

**Does it handle pagination?**
Yes, automatically, up to the `maxItems` limit or the last available page.

**How many products can I collect in one run?**
Up to 5000. The default is 40, which is a fast first run you can raise anytime.

**What export formats are supported?**
JSON, CSV, Excel, HTML table and RSS from the Dataset tab, plus full access through the Apify API.

**Do I need to log in to Allegro?**
No. The actor reads public listing pages only.

### Support

If a field looks wrong or a page fails to parse, check that the listing URL opens correctly in a normal browser, then re-run. Allegro updates its page layout from time to time, and this actor is maintained to keep up with those changes.

# Actor input Schema

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

One or more keywords to search on Allegro, for example 'gofrownica' or 'laptop lenovo'. Each keyword is run as an Allegro search and all matching products are collected.

## `searchUrls` (type: `array`):

Optional. Paste full Allegro listing URLs (search, category or filtered result pages) to extract products from. Use this when you need category or filter pages instead of a plain keyword. Pagination is handled automatically.

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

Maximum number of products to collect across all searches.

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

Per-request timeout in seconds.

## Actor input object example

```json
{
  "searchTerms": [
    "gofrownica",
    "ekspres do kawy"
  ],
  "searchUrls": [
    "https://allegro.pl/listing?string=gofrownica",
    "https://allegro.pl/kategoria/male-agd-gofrownice-sciezka-gofrujaca"
  ],
  "maxItems": 40,
  "requestTimeoutSecs": 45
}
```

# Actor output Schema

## `properties` (type: `string`):

Extracted Allegro product listings with prices, sellers, ratings, delivery options and images.

# 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 = {
    "searchTerms": [
        "gofrownica"
    ],
    "searchUrls": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("kawsar/allegro-product-listings-extractor").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 = {
    "searchTerms": ["gofrownica"],
    "searchUrls": [],
}

# Run the Actor and wait for it to finish
run = client.actor("kawsar/allegro-product-listings-extractor").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 '{
  "searchTerms": [
    "gofrownica"
  ],
  "searchUrls": []
}' |
apify call kawsar/allegro-product-listings-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kawsar/allegro-product-listings-extractor"
        }
    }
}

```

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/jpvvzj08owx7zcU0k/builds/2Vkv4kxacGgi04gc0/openapi.json
