How it will work: 3 steps
- Follow us on ApifyThe tool is built and waits in the queue for the Apify Store. Apify is the cloud platform where our tools run.
- Paste your input and press StartNo code needed: you fill in a form (the input). It already has a working example. For example:
słuchawkiin Keywords. Each start is one run. - Download the resultsWhen the run ends, the results are in a table (the dataset). Open Output, press Export and pick Excel or CSV. JSON and the API are there too.
This tool is an Apify Actor: a small program that runs on Apify. You can also run it on a schedule, for example every Monday. New to it? Read how it works, step by step and the 8 words you need first.
What it does
Allegro Products Scraper reads public offers from Allegro.pl by keyword, category, seller page or offer link and returns one table with price, delivery cost, seller, rating and photos, with no login or API key.
Good for
- Track your competitors' prices and delivery costs on Allegro every day.
- Get only offers that are new since your last run, with Only new offers.
- Export one seller's or one category's offers to a spreadsheet.
- Add EAN, SKU and stock to a list of offer links.
Who uses it
Online sellers
Check the prices and delivery costs of your rivals each day.
Price analysts
Export one category or one seller to a spreadsheet.
Product researchers
Add EAN, SKU and stock to a list of offer links.
Price
Prices will be shown after release.
Questions
Do I need an Allegro account or API key?
No. The Actor reads public pages. It needs no login, no cookies and no key.
Can I get every offer in a category?
Not always. Allegro shows at most 100 pages per search. Split a big search by category or price.
Does it return a private seller's name or phone?
No. For a private person these fields are empty. Contact details are never collected.
How often does the price change in the data?
Each row shows what Allegro displayed at fetchedAt. The Actor keeps no stored copy of offers: every run reads Allegro again.
Why is an offer with details more expensive?
Each offer page is a separate request to Allegro, charged as offer-detail. If list fields are enough, keep includeDetails off.
Is the output complete for a whole category?
Not always. Allegro shows at most 100 pages per search and may skip pages on broad searches. The run summary says when this happened, so check status and reason.
Details
Step by step on Apify
- Open the Input tab. Keywords already has
słuchawki(box 1 in the picture). - You can add List links or Offer links instead of or next to keywords (box 2).
- Keep Maximum offers at the prefilled 10, or set your own number (box 3).
- Open Filters and sorting or Details and monitoring only if you need them (box 4). Then click Start.
- Open the Output tab. Check price and delivery (box 1 below) and seller and rating (box 2). Use Export for CSV, Excel or JSON (box 3).
Use cases
| Task | Input | You get | Key fields | Next step |
|---|---|---|---|---|
| Watch competitor prices | searchUrls with a seller page, on a schedule | Offer | offerId, price, deliveryCost, fetchedAt | Schedule, then Google Sheets or a webhook |
| Find new offers in a niche | queries with onlyNew | Offer | offerId, title, price, seller | Slack or Notion summary |
| Compare the real price with delivery | queries with sortBy = priceWithDeliveryAsc | Offer | priceWithDelivery, deliveryCost, smart | CSV or Excel export |
| Research a category | searchUrls with a category link | Offer | title, price, rating, popularity | Dataset API |
| Match offers to your catalog | productUrls | Offer page | gtin, sku, stock, parameters | Dataset API |
Tips for better results
- Keep Maximum offers at 10 for a first test, then raise it.
- Turn on Only new offers to see just the offers added since your last run.
- Raise the Timeout for more than about 400 offers. The default is 300 seconds.
Limits and good to know
- The maximum is 3,000 offers per run. In our largest test, 3,000 offers from one broad keyword took about 35 minutes at 256 MB of memory, with Timeout raised
- The default timeout is 300 seconds. That is enough for about 400 offers: in our tests 400 to 500 offers took 2 to 3 minutes and 2,000 offers took 8 to 15 minutes. For more, raise Timeout in the run options; if time runs out, the Actor saves what it has and reports
DEADLINE - Offer pages are much slower than list pages. In our tests, 100 offer links took about 11 minutes, 100 offers with details took about 8 minutes and 30 links to offers that no longer exist took about 12 minutes. The default timeout fits about 25 live links, so raise Timeout for more
- Allegro shows at most 100 pages per search. If a search has fewer pages than offers you asked for, the run reports reason
SOURCE_DEPTH_LIMIT. To go further, split the search by category or price - If the main route to Allegro hangs, the Actor reads list pages through a backup route. The backup page has no delivery costs, so those rows are
partialwithdeliveryCostasnull, and the run summary has a warning. Offer links are not read through the backup route - On very broad keywords Allegro often answers with empty or repeated pages from about page 8 on. The Actor asks again for free, but some pages may stay missing: the run is
partialwith reasonSOURCE_ENDED_EARLY, andpagesSkippedshows how many - Allegro answers even a nonsense keyword with similar offers, so a strange query can still return rows. The Actor does not filter them
- Delivery costs are for allegro.pl. On allegro.cz, .sk and .hu
deliveryCostanddelivery.freearenulland rows arepartial; there Free delivery only relies on the Allegro filter, so the row itself does not confirm it. Condition filter works on allegro.pl only
For developers
Sample result
One result from a real test run, in JSON. Real values change from run to run. In Excel or CSV each field is a column.
{
"offerId": "19029207754",
"status": "complete",
"title": "Słuchawki bezprzewodowe dokanałowe Elonix STEREO 29 PRO",
"url": "https://allegro.pl/oferta/19029207754",
"price": { "amount": 84.44, "currency": "PLN" },
"deliveryCost": 10.49,
"priceWithDelivery": 94.93,
"originalPrice": null,
"seller": {
"id": "27662564",
"login": "Ed_Store",
"name": "Ed_Store",
"company": true,
"superSeller": true,
"positiveFeedbackPercent": 99.9,
"url": "https://allegro.pl/uzytkownik/Ed_Store"
},
"rating": { "value": 4.97, "count": 37 },
"images": ["https://a.allegroimg.com/s720/1175da/ca117dc54d5293d1a254efb9e9a5/SLUCHAWKI-BEZPRZEWODOWE-BLUETOOTH-z-TLUMACZEM-DOKANALOWE-SPORTOWE-ROZMOWY"],
"source": "allegro.pl",
"fetchedAt": "2026-11-06T10:18:03.000Z"
}Data fields (38)
| Field | Type | Meaning |
|---|---|---|
offerId | string | Allegro offer ID. |
status | string | complete: all fields the route gives. partial: some missing, for example the delivery price. not_found: the link no longer exists. error: the source failed for this row. |
title | string | Offer title. |
url | string | Clean offer link. |
price | object | Offer price. |
deliveryCost | number | Lowest delivery price. 0 means free delivery; null means unknown. |
priceWithDelivery | number | Price with the lowest delivery. |
delivery | object | Delivery details. |
originalPrice | number | Price before the discount. |
discountPercent | number | Discount in percent. |
seller | object | Seller. Identity fields are null for a private person. |
rating | object | Product rating. |
images | array | Photo links. |
thumbnail | string | Main photo link. |
parameters | array | Offer parameters. |
productId | string | Allegro product ID. |
brand | string | Brand. |
condition | string | Item condition: new, used or the value the source shows. |
gtin | string | EAN or GTIN. From the offer page only. |
sku | string | SKU. From the offer page only. |
categoryId | string | Allegro category ID from the list page. |
sponsored | boolean | Shown as a sponsored ad on this page. |
sponsoredAndOrganic | boolean | The same page shows this offer both as an ad and among the regular results. |
promoted | boolean | Marked as promoted. |
smart | boolean | Smart! delivery. |
position | integer | First place on the page, from 1, counting ads. |
organicPosition | integer | Place among the regular results of this page, from 1. Null when the offer appears on it only as an ad. |
page | integer | List page number. |
productOffersCount | integer | Offers of the same product. |
popularity | object | Popularity text. |
availability | string | Availability, for example InStock or ended. |
stock | integer | Items available. |
market | string | Allegro site: pl, cz, sk or hu. |
searchQuery | string | Keyword that found the row. |
sourceUrl | string | Page the row came from. |
source | string | Source site. |
fetchedAt | string | When the row was read, ISO 8601 in UTC. |
error | string | Error code for a row with status error. |
Input settings (17)
The main fields of the input form. With the API you send them as JSON.
| Setting | Name in the API | Type | Example value |
|---|---|---|---|
| Keywords | queries | array | ["słuchawki"] |
| List links | searchUrls | array | |
| Offer links | productUrls | array | |
| Maximum offers | maxItems | integer | 10 |
| Maximum offers per keyword or link | maxItemsPerQuery | integer | |
| Allegro site for keywords | market | string | "pl" |
| Minimum price | minPrice | number | |
| Maximum price | maxPrice | number | |
| Condition | condition | string | "any" |
| Free delivery only | freeDeliveryOnly | boolean | false |
| Super Seller only | superSellerOnly | boolean | false |
| Sort by | sortBy | string | "relevance" |
| Open each offer page | includeDetails | boolean | false |
| Only new offers | onlyNew | boolean | false |
| Memory name for only new offers | stateName | string | "allegro-seen" |
| Send results to (optional) | deliveryConnector | string | |
| Notion page or channel (optional) | deliveryTarget | string |


