Integrations · Allegro Scraper

Allegro.pl as data, one record per offer.

Allegro Scraper is Marzi's parser packaged as an Apify Actor. Give it an offer link, a search phrase or a category; it walks the pages the way a buyer sees them and returns one clean JSON record per offer — price, price with delivery, rating and reviews, seller, offer count, Allegro's 30-day buyer counter, GTIN and stock on request. You pay per product delivered, and nothing else.

  • Three modes — PRODUCT reads offer pages, SEARCH walks a search phrase, CATEGORY walks a category; Allegro's own sort, condition and price filters apply.
  • One record shape — the same fields whatever the page, nulls where Allegro shows nothing, never a guessed zero.
  • Pay per product — one event per validated, deduplicated, stored record; failed pages, duplicates and invalid records are never charged.
  • Built for agents — strict input and output schemas, no manual steps, a spending cap per run; runs through Apify's API and MCP server.
Runs on Apify · pay per product · no Marzi account needed
apify.com/marzi.ai/allegro-scraper
{
  "mode": "SEARCH",
  "searchQuery": "powerbank 20000mah",
  "maxProducts": 100
}
{
  "offerId": "15764131793",
  "productId": "23b94313-35f0-457e-8fd4-26512cbbfe28",
  "url": "https://allegro.pl/oferta/15764131793",
  "title": "Powerbank Matnox 20000 mAh 22,5 W czarny",
  "price": 119.9,
  "originalPrice": null,
  "currency": "PLN",
  "rating": 4.95,
  "ratingCount": 1842,
  "offersCount": 11,
  "recentBuyers": 1249,
  "promo": true,
  "sponsored": false,
  "smart": true,
  "sellerName": "AGILER_SKLEP",
  "sellerSuperSeller": true,
  "sellerPositivePercent": 99.9,
  "position": 7,
  "scrapedAt": "2026-09-15T18:11:30Z"
}
{
  "products": 100,
  "pagesRead": 2,
  "duplicates": 0,
  "invalid": 0,
  "otherMarketplace": 2,
  "charged": 100,
  "durationSeconds": 27.4,
  "failures": [],
  "fetch": {
    "pages_ok": 2,
    "blocks": 0,
    "provider_failures": 0
  }
}
Data source
3 modesproduct links, a search phrase or a category — one run, one mode
~60 / pageproducts a listing page yields; a 1,000-product category run reads 17 pages in under three minutes
$0.005per product delivered — the only thing charged
10,000products per run at most; Allegro itself lists 100 pages of any listing
Why you need it

“I need Allegro product data in a table or in my agent — without building a scraper.”

Without it

  • A homemade scraper works for a week, then Allegro’s anti-bot answers with a captcha page and the parser reads nothing.
  • Copying prices and sellers by hand from twenty listings, then again next month.
  • An AI agent that can browse, but cannot tell an ad slot from an organic card or a product card from an offer.

With Allegro Scraper

  • One Actor run: a search, a category or a list of offers, and a dataset with one clean record per offer.
  • Blocks, retries, pacing and Lokalnie noise handled inside; failed pages listed with their reasons.
  • A typed schema an agent can budget for — and Marzi’s AI Integration when the agent needs history and estimates too.

Data without the maintenance

A scraper is cheap to write and expensive to keep alive: every anti-bot change costs an evening, and the evening comes every month. Allegro Scraper is the parser Marzi maintains for its own products, sold per record — you pay for the products that arrive, and the evenings are ours.

How it works

Three steps, the whole product

1

Give it a link or a phrase

Pick the mode and paste offer links, category links or type a search phrase — in Apify Console, through the API, or from an AI agent. Only allegro.pl pages are accepted; the Actor rebuilds every URL from what it recognised, so a link to anything else is refused before a page is read.

  • PRODUCT: allegro.pl/oferta/… links, one record each
  • SEARCH: a phrase or a search URL, walked page by page
  • CATEGORY: allegro.pl/kategoria/… links, with sort, condition and price range
Allegro Scraper — 1: Give it a link or a phrase
2

It reads Allegro the way a buyer does

Pages come through a real browser on Polish residential connections, paced the way Allegro tolerates: a few pages per identity, then a fresh one. A block is retried on a new identity with back-off; a page that will not read is recorded with its reason, and the run goes on.

  • Listing cards: title, price, crossed-out price, delivery, rating, offer count, buyers, seller, badges
  • Offer pages, on request: GTIN/EAN, stock, units sold, category path, written reviews
  • Lokalnie classifieds mixed into a listing are skipped, not stored
Allegro Scraper — 2: It reads Allegro the way a buyer does
3

Take the records where you need them

Every product lands in the run's dataset the moment it is validated — JSON, CSV or XLSX from Console, or straight from the API. A RUN_SUMMARY next to it says how many pages were read, what was skipped and why, and what the run cost.

  • One record per Allegro offer, deduplicated by offer ID
  • Dataset schema with a description on every field
  • RUN_SUMMARY: pages, duplicates, failed URLs with reasons, duration
Allegro Scraper — 3: Take the records where you need them
What is inside

Built from what Allegro actually shows

Every figure on the screen has the page it was taken from and the method printed next to it. These are the parts.

The Marzi parsers

The same readers of Allegro's listing and offer pages that feed Marzi's weekly index, Competitor Tracker and Price Tracker — one source of truth, deployed to the Actor with every release.

Only allegro.pl

Links are classified before anything is fetched: allegro.pl offers, searches and categories, nothing else. Allegro Lokalnie and the .cz/.sk/.hu sites are different marketplaces and are refused.

Retries that know the difference

A DataDome block, a dropped browser and a page of another shape are three different failures; each is retried the right way, and none of them stops the run.

Charged after the record

The event fires after the record is validated and stored in your dataset. A run that finds nothing costs nothing; set a maximum cost per run and it stops at your cap.

Made for AI agents

A typed input schema, a typed output schema, deterministic records and no interactive steps — what Apify's MCP server and agent frameworks need to run an Actor unattended.

A run that explains itself

RUN_SUMMARY in the key-value store: pages read, products, duplicates, every failed URL with its reason, provider usage and duration.

Run it

From Console, the API or an agent

The same Actor whether a person starts it in Apify Console, a script calls the API, or an AI agent picks it from Apify’s MCP server. Every run ends in a dataset you can read as JSON, CSV or XLSX.

curl -X POST "https://api.apify.com/v2/acts/marzi.ai~allegro-scraper/runs?token=$APIFY_TOKEN&maxTotalChargeUsd=5" \
  -H "Content-Type: application/json" \
  -d '{"mode":"SEARCH","searchQuery":"powerbank 20000mah","maxProducts":100}'
# then the dataset: GET https://api.apify.com/v2/datasets/<defaultDatasetId>/items?format=csv
from apify_client import ApifyClient

run = ApifyClient(token).actor("marzi.ai/allegro-scraper").call(run_input={
    "mode": "CATEGORY",
    "startUrls": [{"url": "https://allegro.pl/kategoria/powerbanki-252023"}],
    "maxProducts": 500, "sort": "popularity",
})
for item in ApifyClient(token).dataset(run["defaultDatasetId"]).iterate_items():
    print(item["title"], item["price"], item["recentBuyers"])
# Apify's MCP server exposes any Store Actor as a tool
Server:  https://mcp.apify.com
Tool:    marzi.ai/allegro-scraper
Input:   {"mode": "SEARCH", "searchQuery": "słuchawki bluetooth", "maxProducts": 50}
Budget:  maxTotalChargeUsd on the run — the Actor stops at the cap

Actor: marzi.ai/allegro-scraper · pay per event · limited permissions

What the numbers mean

Measured, estimated, and not yet

Marzi says which is which on the screen itself. Here is the short version for Allegro Scraper.

Measured

Prices, ratings, seller, offer count are read from the page as displayed, at the time stamped on the record.
Buyers are Allegro’s own 30-day counter on the product card — people, not units; the offer’s own counter comes with the offer page.
Deduplication is by offer ID: no run returns the same offer twice.

Estimated or limited

Sales and revenue are not in the output — the Actor reports counters, not estimates. Estimates, history and monitoring are Marzi’s AI Integration.
Allegro’s listing ceiling is 100 pages (about 6,000 products) per search or category; a bigger category is read as several narrower runs.
Brand on listing cards is not always shown by Allegro; the offer page carries it when published.
Who it's for

Three ways to use Allegro Scraper

Developers

One API call or one MCP tool call gives you Allegro product data in a stable shape — no browser to run, no anti-bot to maintain, no parser to keep alive.

AI agents and no-code

Run it from Apify’s MCP server, an agent framework, Make or Zapier: a strict schema in, a dataset out, a spending cap on the run.

Analysts and agencies

Pull a category or a search into a spreadsheet in minutes — prices, sellers, ratings and buyer counters — and repeat it next week with the same run.

FAQ

questions about Allegro Scraper

Do I need a Marzi account?

No. The Actor runs on your Apify account and bills through Apify. Marzi builds and maintains it; nothing in the run touches Marzi’s platform.

What does it cost?

One event, product-scraped, per product delivered: the price is on the Actor’s Store page, and a run with a maximum cost stops when it is reached. Apify’s free plan covers the platform side of small runs.

What exactly is one record?

One Allegro offer: the seller’s listing of a product. A listing card is the offer that represents a product card in the results; an offer page is that offer in full. The product card’s own ID is on the record too.

How fast is it?

A listing page yields about 60 products and takes around ten seconds; 100 products from a search took 30 seconds on the platform, 1,000 from a category under three minutes. Offer pages are one page per product, so PRODUCT mode and Open every offer page take proportionally longer.

Is the data the same as in Marzi’s cabinet?

Same parsers, same field semantics, read at the moment of the run. The cabinet adds what the Actor deliberately leaves out: history, estimates, monitors and the weekly index.

Can an AI agent use it?

Yes. It is a plain pay-per-event Actor with typed input and output and no standby mode, which is what Apify’s MCP server and agent runners expect. Set maxTotalChargeUsd on the run as the agent’s budget.

What about Allegro’s terms and robots?

The Actor reads public pages only, at a pace Allegro tolerates, and never the pages Allegro’s robots.txt disallows (variants, standalone reviews). Personal pages, carts and logins are refused.

Run it on Apify

Open the Actor on Apify Store, paste a link or a phrase and get your first dataset in a minute. Apify’s free plan is enough to try it.