Ricardo.ch Listings Scraper avatar

Ricardo.ch Listings Scraper

Pricing

Pay per event

Go to Apify Store
Ricardo.ch Listings Scraper

Ricardo.ch Listings Scraper

Scrape live auction and classifieds listings from Ricardo.ch, Switzerland's #1 online marketplace — search by category or free-text slug and get title, price, listing URL, image, and a stable listing ID in one structured dataset, page after page.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 hours ago

Last modified

Categories

Share


🎯 What this scrapes

Ricardo.ch is Switzerland's #1 auction and classifieds marketplace, and its search-results page (/de/s/<slug>) is the entry point for browsing any category or free-text query — laptops, bikes, watches, whatever buyers are searching for. This Actor drives that same search endpoint and returns every listing it finds as one clean row: title, price in CHF, listing URL, image, and a stable numeric listing ID, deduplicated across pages.

🔥 What we handle for you

  • 🔁 Retries with exponential backoff on 408 / 429 / 5xx — up to 5 attempts per page, rotated browser impersonation on every retry.
  • 🧩 One search, two wire formats handled — Ricardo.ch ships page 1 and page 2+ differently under the hood; we normalize both into the same clean row shape.
  • 🫠 A single unparsable page never fails the run — logged and pagination stops cleanly, the rest of your data still ships.
  • 🧊 Clean, typed dataset rows — Pydantic-validated, deduplicated by listing ID, ISO-8601 timestamps, JSON / CSV / Excel export straight from the Apify Console.
  • 💰 Pay-Per-Event pricing — you only pay for listings actually returned; a zero-match search costs nothing beyond the warm-up fee.

💡 Use cases

  • Price monitoring — track how a category's listings and asking prices shift week to week.
  • Resale sourcing — scan a category or keyword for underpriced listings worth flipping.
  • Market research — build a dataset of live CHF pricing across Ricardo.ch categories.
  • Feed a spreadsheet or BI tool with structured Swiss marketplace data, no manual copy-paste.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Fill in the input form — most fields have sensible defaults.
  3. Click Start. Output streams into the run's dataset.
  4. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.

📥 Input

FieldTypeRequiredDefaultNotes
search_slugstringno'laptop'The path segment after /de/s/ on Ricardo.ch — a category or free-text search term (e.g. laptop, velo).
max_pagesintegerno2Hard cap on pages fetched. Keep at 2 or higher to exercise both of Ricardo.ch's listing formats.
max_resultsintegerno100Hard cap on dataset rows returned across all pages.
proxyConfigurationobjectno{'useApifyProxy': False}Ricardo.ch's public search page is keyless with no anti-bot surface observed. Leave this off unless your account…

Example input

{
"search_slug": "laptop",
"max_pages": 2,
"max_results": 20,
"proxyConfiguration": {
"useApifyProxy": false
}
}

📤 Output

Every row is one dataset item.

FieldTypeNotes
listing_idstringNumeric id trailing the listing URL (e.g. "1321416530").
titlestringListing name/title.
pricenumberAsking/current price. Null when unparsable (e.g. "Preis auf Anfrage").
currencystringAlways "CHF" for Ricardo.ch.
listing_urlstringAbsolute URL to the listing detail page.
image_urlstringPrimary listing image, when present.
search_slugstringThe input slug this row was found under.
pageinteger1-based page number this row was scraped from.
source_formatstringWhich parser produced this row: json_ld (page 1) or react_flight (page 2+).
scraped_atstringISO-8601 timestamp of this fetch.

Example output

{
"listing_id": "1321416530",
"title": "POWERHOUSE MacBook Pro 16Zoll/M4 Pro/2 TB SSD/24 GB RAM",
"price": 2800.0,
"currency": "CHF",
"listing_url": "https://www.ricardo.ch/de/a/powerhouse-macbook-pro-16zoll-m4-pro-2-tb-ssd-24-gb-ram-1321416530/",
"image_url": "https://ricardo-images.example/1321416530.jpg",
"search_slug": "laptop",
"page": 1,
"source_format": "json_ld",
"scraped_at": "2026-09-20T00:00:00Z"
}

💰 Pricing

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.2One-off warm-up charge per run
result-row$0.004Per unique dataset item

Example: 1 000 listings at the rates above ≈ $4.20. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

🚧 Limitations

  • Search-results fields only — no detail-page enrichment (seller info, bid history, full description) in this version.
  • No auction end-time or bid-count fields — not published on the search-results page.
  • German-language /de/s/ search path only; French/Italian locale paths are out of scope.
  • Any endpoint requiring login (watchlist, bids, messaging) is out of scope.

❓ FAQ

Do I need a Ricardo.ch account or login?

No. This Actor reads only the public search-results page — no login, no auth header, no cookie session required.

What happens if my search slug has no listings?

The run succeeds with zero rows and a status message naming the slug searched — no placeholder rows, no failed run.

Which locale does this cover?

The German-language /de/s/ search path only. French (/fr/s/) and Italian (/it/s/) locales are not covered in this version.

Does this scrape the full listing detail page?

Not in this version — you get everything the search-results page publishes (title, price, URL, image, listing ID). Seller info, bid history, and full descriptions may land in a future version.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.