2dehands Scraper avatar

2dehands Scraper

Pricing

from $1.20 / 1,000 listings

Go to Apify Store
2dehands Scraper

2dehands Scraper

Extract data from 2dehands.be across thousands of listings — real estate, cars, jobs, and more. Scrape titles, descriptions, images, prices, location, seller names, and contact details, plus every other ad field. Unlimited and extremely fast!

Pricing

from $1.20 / 1,000 listings

Rating

0.0

(0)

Developer

Gen First

Gen First

Maintained by Community

Actor stats

1

Bookmarked

3

Total users

2

Monthly active users

12 days ago

Last modified

Share

Extract listings, prices, photos, seller info, and location data from 2dehands.be — no login, no cookies, and no proxy setup required. 2dehands Scraper turns any 2dehands search, category, single-ad, or seller profile URL into clean, structured JSON you can export to CSV, Excel, JSON, XML, or HTML Table.

What does 2dehands Scraper do?

  • 🔎 Scrapes search & category pages — paste any 2dehands category or search-results URL and collect every listing on it (with automatic pagination).
  • 📄 Scrapes individual ads — paste a single ad URL to get its full detail record.
  • 👤 Scrapes seller profiles — paste a seller/store profile URL to collect every active listing that seller has published (private sellers and professional shops alike).
  • 🚗 Works across all categories — cars and vehicles, electronics, home & garden, fashion, hobbies, services, and more.
  • 🧾 Returns rich structured data — title, description, price, currency, images, location, seller profile, promotion traits, and category-specific attributes (e.g. mileage, fuel, transmission, and options for cars).
  • 🔓 No login or session cookies required.
  • 🌐 Proxy preconfigured — uses Apify residential proxy (country BE) for reliable performance out of the box.
  • 📤 Export anywhere — JSON, CSV, Excel, XML, or HTML Table.

About 2dehands

2dehands.be ("second-hand" in Dutch) is one of Belgium's largest online classifieds marketplaces and the Belgian sister site of Marktplaats. It hosts a broad range of listings across vehicles, electronics, home & garden, fashion, and services, making it a valuable source of Belgian marketplace and pricing data.

What can you do with this data?

  • Price monitoring — track asking prices for cars, electronics, and other goods over time.
  • Vehicle & product price comparison — benchmark prices across many comparable listings.
  • Seller & inventory tracking — drop a seller's profile URL to monitor a specific shop's or private seller's full inventory.
  • Dataset building — feed structured listing data into analytics, dashboards, or ML pipelines.

How to use 2dehands Scraper

  1. Open the actor on Apify.
  2. Add one or more 2dehands URLs to the urls field (search/category pages, single ads, or seller profiles).
  3. Set maxRecords to cap how many listings to collect (default 100).
  4. Click Start and let the scraper run.
  5. Download the results in JSON, CSV, Excel, XML, or HTML Table.

Input parameters

Input parameterDescriptionRequiredDefault value
urls2dehands URLs to scrape (search/category, single-ad, or seller URLs)true{ "url": "https://www.2dehands.be/l/auto-s/fiat/f/doblo/771/p/2/#Language:all-languages|constructionYearFrom:2017" }
maxRecordsMaximum number of records to scrapefalse100

Supported input URLs

2dehands Scraper accepts three kinds of URLs:

  • Search / category URL — collects every listing on the page (and paginates):
    • https://www.2dehands.be/l/auto-s/q/bmw+x5/
    • Category, keyword, attribute filters, and hash-based ranges (e.g. #constructionYearFrom:2017) are all supported.
  • Single ad URL — collects one listing's full detail record:
    • https://www.2dehands.be/v/auto-s/bmw/m2411592782-bmw-gt-630i-2018
    • Pattern: https://www.2dehands.be/v/<category>/<brand>/<id>-<slug>.
  • Seller profile URL — collects every active listing from one seller (and paginates):
    • https://www.2dehands.be/u/spardex/28393822/
    • Pattern: https://www.2dehands.be/u/<slug>/<sellerId>/. Both private sellers and professional shops use this form. Results respect maxRecords.

You can mix all three URL types in the same urls list. Each output record's inputUrl field is set to the original URL you supplied that produced it.

Examples

Input

Scrape 20 search results from a given search URL:

{
"urls": ["https://www.2dehands.be/l/auto-s/q/bmw+x5/"],
"maxRecords": 20
}

Scrape up to 20 listings from a single seller's profile:

{
"urls": ["https://www.2dehands.be/u/spardex/28393822/"],
"maxRecords": 20
}

Output

Seller-profile runs return the same ad records as search and single-ad runs — one record per listing — with each record's inputUrl set to the URL you supplied.

The example below is illustrative — personal and identifying values have been anonymized.

{
"id": "m2411592782",
"url": "https://www.2dehands.be/v/auto-s/bmw/m2411592782-bmw-gt-630i-2018",
"title": "BMW GT 630i 2018",
"description": "BMW 630i Gran Turismo (G32) – Essence – Euro 6d-TEMP – Excellent état\n\nCaractéristiques :\n• BMW 630i GT\n• Moteur essence 2.0 Turbo – 258 ch (190 kW)\n• Norme Euro 6d-TEMP\n• Boîte automatique\n• 5 portes / 5 places\n• Intérieur cuir noir\n• Climatisation automatique bi-zone\n• Navigation GPS BMW Professional\n• Capteurs de stationnement\n• Jantes alliage BMW\n\nVéhicule en très bon état général, idéal pour les longs trajets. Essai possible pour acheteur sérieux.",
"categoryId": "96",
"categoryName": "BMW",
"parentCategoryId": "91",
"parentCategoryName": "Auto's",
"adType": "RegularPaid",
"brand": "BMW",
"price": 19000,
"priceCents": 1900000,
"priceType": "MIN_BID",
"currency": "EUR",
"images": [
"https://images.2dehands.com/api/v1/hz-twh-pro-listing/images/3e1c1f3c-fea1-4d55-a564-7b1810a4678e?rule=ecg_mp_eps$_85.jpg",
"https://images.2dehands.com/api/v1/hz-twh-pro-listing/images/865ce191-6ec9-42ce-a57f-2349d08dda53?rule=ecg_mp_eps$_85.jpg",
"https://images.2dehands.com/api/v1/hz-twh-pro-listing/images/ce5f07e0-52f4-493a-87a0-fb1e38cd1059?rule=ecg_mp_eps$_85.jpg"
],
"thumbnailUrl": "https://images.2dehands.com/api/v1/hz-twh-pro-listing/images/3e1c1f3c-fea1-4d55-a564-7b1810a4678e?rule=ecg_mp_eps$_85.jpg",
"imageCount": 9,
"createdAt": "2026-06-17T12:57:44Z",
"viewCount": 16,
"favoritedCount": 1,
"isReserved": false,
"isCarAd": true,
"traits": ["DAG_TOPPER_7DAYS", "PACKAGE_PREMIUM"],
"highlights": [],
"attributes": {
"brand": "BMW 6 Reeks",
"constructionYear": "2018",
"mileage": "162.000 km",
"fuel": "Benzine",
"transmission": "Automaat",
"cylinderCapacity": "2.0 liter",
"euronormBE": "Euro 6",
"vehicleType": "Berline",
"color": "Zilver of Grijs",
"upholstery": "Leder",
"interiorColor": "Zwart",
"powerWheelDriver": "Achterwiel",
"serviceHistory": "Dealer onderhouden",
"options": [
"Achteruitrijcamera",
"Airbags",
"Airconditioning",
"Apple Carplay",
"Bluetooth",
"Elektrische ramen",
"Lederen bekleding",
"Parkeercamera",
"Start-stop-systeem",
"USB"
]
},
"location": {
"cityName": "Zaventem",
"countryName": "Belgie",
"countryAbbreviation": "BE",
"postcode": null,
"latitude": null,
"longitude": null,
"isAbroad": false
},
"seller": {
"id": "00000000",
"name": "example_seller",
"type": "CONSUMER",
"pageUrl": "https://www.2dehands.be/u/example_seller/00000000/",
"phoneNumber": "",
"websiteUrl": null,
"websiteDisplayUrl": null,
"activeYears": 9
},
"inputUrl": "https://www.2dehands.be/l/auto-s/q/bmw+x5/"
}

Output fields

Each scraped listing is one dataset record (stored in the ad_details dataset) with the following fields. Fields typed as optional may be null when 2dehands does not provide a value.

Core

FieldDescription
idUnique 2dehands listing ID (e.g. m2411592782).
urlCanonical URL of the ad.
titleListing title.
descriptionFull listing description text (newlines preserved).
categoryId2dehands category ID.
categoryNameHuman-readable category name.
parentCategoryIdParent (L1) category ID.
parentCategoryNameParent (L1) category name.
adTypeAd type (e.g. RegularPaid).
brandListing brand, when available.
imagesArray of full-size image URLs.
thumbnailUrlURL of the thumbnail image.
imageCountNumber of images on the listing.
createdAtFirst publication date/time (ISO 8601).
viewCountNumber of times the ad has been viewed.
favoritedCountNumber of times the ad has been favorited.
isReservedWhether the item is marked as reserved.
isCarAdWhether the listing is a car/vehicle ad.
traitsPromotion traits applied to the ad (e.g. PACKAGE_PREMIUM).
highlightsListing highlights, when present.
inputUrlThe original URL you supplied that produced this record.

Pricing

FieldDescription
pricePrice as a number (in currency).
priceCentsPrice in cents (integer).
priceTypePrice type (e.g. FIXED, MIN_BID, RESERVED).
currencyCurrency code (e.g. EUR).

Location (location)

FieldDescription
cityNameCity name.
countryNameCountry name (e.g. Belgie).
countryAbbreviationCountry code (e.g. BE).
postcodePostal code, when available.
latitude / longitudeGeographic coordinates, when available.
isAbroadWhether the item is located outside Belgium.

Seller (seller)

FieldDescription
idSeller account ID.
nameSeller / shop display name.
typeSeller type (e.g. CONSUMER, professional).
pageUrlURL of the seller's profile page.
phoneNumberSeller phone number, when published.
websiteUrlSeller website URL, when published.
websiteDisplayUrlDisplay form of the seller website.
activeYearsHow many years the seller has been active.

Attributes (attributes)

A flat, category-specific key→value map (Record<string, string | string[]>). Most values are strings; some (such as a car's options) are arrays of strings. The exact keys depend on the listing's category — for cars these include constructionYear, mileage, fuel, transmission, cylinderCapacity, color, and options, among others.

Output formats

Results are stored in an Apify dataset (ad_details). After a run finishes you can download the data as JSON, CSV, Excel, XML, or HTML Table, or pull it via the Apify API. The dataset's overview view surfaces id, title, price, currency, and url.

❓ FAQ

Do I need proxies to scrape 2dehands?

No. The actor is preconfigured to use Apify proxy for optimal performance — you don't need to set anything up.

Do I need to write code?

No. 2dehands Scraper is a no-code tool: paste your URLs, set maxRecords, and run.

Can I scrape a single ad or a whole category?

Both. Provide a search/category URL to collect many listings, or a single ad URL to collect one listing's full record. You can mix search, single-ad, and seller-profile URLs in the same urls list.

Can I scrape every listing from one seller?

Yes. Paste the seller's profile URL — https://www.2dehands.be/u/<slug>/<sellerId>/ — and the scraper collects that seller's active listings, up to maxRecords. This works for both private sellers and professional shops. Each result is a full ad record, identical to single-ad output, with inputUrl set to the profile URL.

How many listings can I scrape?

Use maxRecords to set the cap (default 100). Increase it to collect more results across paginated search and seller pages.

What data can I extract?

Title, description, price, currency, images, location, seller profile, promotion traits, and category-specific attributes (such as mileage, fuel, and transmission for cars). See Output fields.

Scraping publicly available data is generally permitted, but you are responsible for how you use it. Avoid collecting or storing personal data beyond what your use case requires, and comply with applicable laws (including the GDPR) and 2dehands' terms. Consult legal counsel if you're unsure.

What export formats are available?

JSON, CSV, Excel, XML, and HTML Table — plus programmatic access via the Apify API.

Support

For custom or simplified outputs, or to report a bug, contact the developer at support (at) getmediumdata.com or open an issue.