DoneDeal Scraper
Irish classified ads from donedeal.ie as clean JSON: cars first, every section on request. Price, year, mileage, county, town, seller type, photos; ad...
Irish classified ads from donedeal.ie as clean JSON: cars first, every section on request. Price, year, mileage, county, town, seller type, photos; ad pages add make, model, attributes and features. Seller names, phones and addresses never collected. Pay per result.
$3.00 / 1,000 · Recently published - building its public record.
Run it on Apify → Free to try - runs bill per result on your own account.
What you give it
Every field is optional unless marked; sensible defaults do the rest.
| Field | Type | What it does | Default |
|---|---|---|---|
section |
string | The site section to search, as its address spells it: cars (default), motorbikes, tractors, farming, commercials, furniture, or all for every section. The section path of any search page on the site works. |
cars |
make |
string | Vehicle make, spelled as the site does: Toyota, BMW, Mercedes-Benz. Vehicle sections only. |
- |
model |
string | Vehicle model under the make: Corolla. Needs make. |
- |
keywords |
string | Words to search for in the ads, the way the site's search box takes them. | - |
county |
string | Only ads in this county: Dublin, Cork, Galway, ... the 32 counties as the site names them. Leave empty for all of Ireland. |
- |
listingIds |
array | Re-check ads you already know instead of searching: one per line, as the number at the end of the ad address (the listingId of every dataset item) or the ad's full address. Each one is read from its own page, so it carries the description, every attribute, the feature list and the dates. An ad that is gone from the site is skipped, named in the log and not billed. When given, the search fields of this form are ignored and the run status says which. Up to 50. |
[] |
priceMinEur |
integer | Only include ads priced at least this many euros. | - |
priceMaxEur |
integer | Only include ads priced at most this many euros. | - |
yearMin |
integer | Vehicles from this year on. | - |
yearMax |
integer | Vehicles up to this year. | - |
mileageMinKm |
integer | Vehicles with at least this mileage. | - |
mileageMaxKm |
integer | Vehicles with at most this mileage. | - |
fuelType |
string | As the site names it: Petrol, Diesel, Electric, Petrol hybrid, Diesel hybrid, Plug-in hybrid. |
- |
transmission |
string | Manual or automatic. | - |
sellerType |
string | Only private sellers, or only dealers and traders. | - |
adType |
string | Ads offering something for sale, or wanted ads. | - |
sortBy |
string | Order of results: newest (best for monitoring), oldest, price_asc, price_desc, mileage_asc, mileage_desc, or relevance (the site's own order). | newest |
maxItems |
integer | Stop after this many ads. Free-plan runs are capped at 5 items. The form starts at 25 for a cheap first run - that is the form's prefill, not a cap on your plan; clear it to use the default of 1000. The site serves a window of ads per query; above it the run splits the query by price band, so a whole section comes through when you raise it. | 1000 |
scrapeDetails |
boolean | The search row carries the title, price, year, mileage, county, town, posting time and cover photo. Turn this on to read each ad's own page for the description, make, model and every attribute (fuel, transmission, body, engine, colour, owners, NCT, road tax, ...), the feature list, every photo, the price drop, the dates and the view counter. One extra request per ad, so a run is slower. Seller names, phone numbers, dealer addresses and coordinates are never read. | False |
reportFailures |
boolean | When a run fails, send the developer the actor name and build, an error category, the error message (truncated) and a one-way hash of your input - so a bug can be fixed without anyone asking you to reproduce it. Your input itself, your results and your identity are never sent, and successful runs send nothing at all. Switch this off and the actor behaves exactly the same. | True |
What you get back
One JSON object per result, with exactly these fields - no seller identities, no contact data, ever.
| Field | Type | Meaning |
|---|---|---|
listingId |
string | The site's id of the ad, the number at the end of its address. |
url |
string | Direct link to the ad. |
title |
string | The ad's title. |
section |
string | The site's section path of the ad: cars, motorbikes, tractors, livingroom, ... |
sectionLabel |
string | The section as the site labels it. |
priceCents |
integer | Asking price in euro cents. |
currency |
string | Always EUR when a price is present. |
priceDisplay |
string | The price as the site displays it. |
priceOnRequest |
boolean | True when the seller asks for offers instead of naming a price. |
summary |
array | The site's key facts line: year, engine, mileage on vehicles. |
year |
integer | Year of the vehicle. |
mileageKm |
integer | Mileage in kilometres. |
county |
string | County of the ad. |
town |
string | Town of the ad. Locality-level only: street, eircode and coordinates are never collected. |
postedAt |
string | When the ad was (last) published (ISO timestamp). |
age |
string | Age of the ad as the site shows it. |
spotlighted |
boolean | True when the seller paid for a spotlight placement. |
historyVerified |
boolean | True when the site's Greenlight check verified the vehicle's history. |
sellerType |
string | Whether the ad comes from a dealer or trader, or a private seller. The only seller-related field in the output. |
imageUrls |
array | Photos of the ad, in the site's order (the cover photo on search rows, every photo on ad pages). |
description |
string | The seller's description. Ad pages only. |
make |
string | Vehicle make. Ad pages only. |
model |
string | Vehicle model. Ad pages only. |
trim |
string | Trim as the site states it. Ad pages only. |
bodyType |
string | Body type. Ad pages only. |
fuelType |
string | Fuel type. Ad pages only. |
transmission |
string | Transmission. Ad pages only. |
engineSize |
string | Engine size as the site states it. Ad pages only. |
enginePower |
string | Engine power as the site states it. Ad pages only. |
seats |
string | Seats. Ad pages only. |
doors |
string | Doors. Ad pages only. |
colour |
string | Colour. Ad pages only. |
owners |
string | Number of owners. Ad pages only. |
countryOfRegistration |
string | Current country of registration. Ad pages only. |
imported |
string | Whether the vehicle was imported, as the site states it. Ad pages only. |
roadTax |
string | Annual road tax in euros, as the site states it. Ad pages only. |
nctExpiry |
string | NCT expiry as the site states it. Ad pages only. |
attributes |
object | Every attribute the site lists for the ad, by the site's own key. Ad pages only. |
features |
object | The vehicle's feature list, grouped as the site groups it. Ad pages only. |
previousPriceCents |
integer | The earlier asking price when the site shows a price drop. Ad pages only. |
firstPostedAt |
string | When the ad first went up. Ad pages only. |
updatedAt |
string | When the ad was last updated. Ad pages only. |
status |
string | The site's own status, e.g. published. Ad pages only. |
wanted |
boolean | True when the ad is a wanted ad rather than a sale. Ad pages only. |
deliveryAvailable |
boolean | True when the seller offers delivery. Ad pages only. |
photoCount |
integer | Number of photos on the ad. Ad pages only. |
views |
integer | The site's view counter. Ad pages only. |
Health
Recently published - building its public record. Live record, failures included: status page.
Full documentation, examples and the AI-assistant prompt live on the store page.
Questions
Is scraping donedeal.ie legal?
This is not legal advice. The actor reads what any logged-out visitor sees on donedeal.ie, with no login, no CAPTCHA solving and no private endpoints, and it extracts no seller name, user id, phone number, dealer address or coordinates, so the output holds no personal data. Whether your own use of the ads is allowed under the site's terms and your jurisdiction's rules is yours to assess.
Which sections can I search?
Any section path of the site: cars (default), motorbikes, tractors, farming, commercials, furniture, or all for every section at once, plus a make and model under the vehicle sections (Toyota, Corolla) and keywords the way the site's search box takes them. An unknown section fails before anything is billed, with the rule in the message.
Can I get only the newest ads?
Sort by newest, keep maxItems to a page or two and schedule the run: each run returns the latest ads for the section, county and filters you set, and every row carries postedAt, so a daily watch is one schedule away.
How much do 10,000 ads cost?
$30.00, billed per delivered ad at $3.00 per 1,000. That price covers the run's platform usage, and a run that fails or returns nothing bills nothing beyond the actor start.
Do I need residential proxies for donedeal.ie?
No setup on your side: the site answers only consumer networks, so the actor's default proxy is already an Apify residential proxy, and the per-result price covers it. Leave the proxy setting as it is.
Does it return seller or dealer phone numbers?
No. The only seller field is whether the ad comes from a dealer or trader, or a private seller. Seller names, user ids, phone numbers, dealer addresses and coordinates are never extracted, and a test on every build fails if one ever appears, so this is not a setting that can be switched off.
What does the ad page add?
Every search row carries the title, price, year, mileage, county, town, posting time, seller type and cover photo. Turn on scrapeDetails, or name ads in listingIds, and each row also carries the description, the make, model and every attribute the site lists (fuel, transmission, body, engine, colour, owners, NCT expiry, road tax), the feature list, every photo, the earlier price when the site shows a drop, the first-posted and updated dates and the view counter.