999.md Scraper: Vehicle Classified Ads Moldova avatar

999.md Scraper: Vehicle Classified Ads Moldova

Pricing

from $22.00 / 1,000 vehicle ads

Go to Apify Store
999.md Scraper: Vehicle Classified Ads Moldova

999.md Scraper: Vehicle Classified Ads Moldova

Scrape 999.md, the largest classifieds site in Moldova: cars, vans, trucks, motorcycles, tractors, trailers and more, with price in EUR, USD and lei, mileage, equipment, photos and seller data, plus dealer profiles. No login, no proxy. Export JSON, CSV or Excel.

Pricing

from $22.00 / 1,000 vehicle ads

Rating

0.0

(0)

Developer

RecordsData

RecordsData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

RecordsData

999.md Scraper: Vehicle Classified Ads from Moldova

999.md Scraper is an Apify Actor that extracts vehicle classified ads from 999.md, the largest classifieds site in Moldova. It reads 14 vehicle sections (about 104,800 ads for sale on 2026-10-19) and returns the price in euro, dollar and lei, make, model, year, mileage, fuel, gearbox, photos, region and seller type. No login, proxy or browser is needed.

Export the result as JSON, CSV, Excel, XML or HTML, or read it through the Apify API. The actor calls the same public GraphQL endpoint that the 999.md website uses for its own search pages, at about four requests per second.

What can you scrape from 999.md?

Section (categories)Ads for sale on 2026-10-19Notes
cars81,663Make, model, generation, body, drive, VIN where given
vans6,336
trucks2,101Body, axle layout, payload
buses213
motorcycles4,770
bicycles2,974
electric-scooters1,382The section also holds accessories and parts
construction-equipment1,600
tractors1,370
combines365
trailers1,480
retro-cars177Classic cars
watercraft365Boats and other watercraft
aircraft18Includes light aircraft and paramotors

Each row has up to 87 typed fields (the ones a listing does not have are left out): price in the listed currency plus priceEur, priceUsd and priceMdl, make, model, year, mileage, fuelType, transmission, bodyType, driveType, engineSize, powerHp, color, condition, registration, region, the full photo list, videoUrl, publishedAt, updatedAt and the seller block.

Why use this actor?

  • The whole site is reachable. Search depth is not capped. A local test read 1,500 cars in 27 seconds, and a daily monitor needs only the first page or two.
  • Real filters, applied by 999.md itself. 150 car makes with their models, 44 regions and localities, price with EUR, USD or MDL, year, mileage, power, fuel, gearbox, body, drive, color, condition, registration, seller type and ads with video. A section that lacks a filter says so instead of ignoring it.
  • Three currencies in every row. Ads listed in lei, euro or dollars come back with the three converted prices at the site's own rate.
  • Clean, typed output. Numbers are numbers, enums are lowercase English (diesel, automatic, suv, 4x4), dates are ISO 8601, and empty values are left out.
  • Monitoring built in. Scheduled runs return only new ads and, if you ask, ads whose price changed.
  • Privacy built in. Names, phone numbers and emails of private sellers are never output.

How to scrape 999.md vehicle ads in four steps

  1. Create a free account at https://console.apify.com and open the actor.
  2. Pick the sections, then add filters such as makes Toyota, regions Chișinău or a price range.
  3. Set the maximum number of results and click Start.
  4. Download the dataset from the Storage tab as JSON, CSV or Excel.

Minimal example input:

{
"mode": "search",
"categories": ["cars"],
"makes": ["BMW"],
"models": ["X5"],
"yearFrom": 2015,
"fuelTypes": ["diesel"],
"sortBy": "price-asc",
"maxItems": 100
}

Three ways to collect data

Mode (mode)Use it toRecord types
searchFind ads by section, make, model, region and the full filter setvehicle, price-change, seller
urlsRefresh known ads by number or address, read a seller profile, or read a vehicle list addressvehicle, seller
sellersRead dealer and company profiles, and optionally all their vehiclesseller, vehicle

Make, model and region names are looked up on the site and are not case sensitive. An unknown name ends the run with one free error row that lists close matches.

What data do you get?

Every row has a recordType: vehicle, price-change or seller.

FieldDescription
listingId, url, title, imageUrlAd number, canonical address, title and cover photo
vehicleType, make, model, generation, yearType (car, van, truck, bus, motorcycle, bicycle, electric-scooter, machinery, tractor, trailer, boat, aircraft), make, model, generation and model year
bodyType, fuelType, transmission, driveType, steeringSide, color, doors, seatsSpecification as lowercase English enums
engineSize, powerHp, electricRangeKm, batteryCapacityKwh, payloadKgEngine volume in cc, power, electric range, battery and truck payload
mileage, mileageUnit, condition, registration, originCountry, availability, vinOdometer in km or miles, condition, where the vehicle is registered, origin, stock status and VIN
price, currency, priceMode, downPayment, priceEur, priceUsd, priceMdl, priceOnRequestAsking price as listed, the three converted prices, and a flag for ads without a price
region, city, address, latitude, longitudeLocation as far as the ad gives it
description, features, specs, images, imageCount, videoUrlSeller text, equipment, extra specifications, full-size photos and video link
publishedAt, updatedAt, expiresAt, isExpiredFirst publication, last renewal, expiry and expired flag
sellerType, isPrivateSeller, sellerName, sellerUrl, isVerifiedSeller, sellerPhonedealer or private; identity and phone are filled for dealers only (phone needs Include dealer contact details)
marketMedianPriceEur, marketAveragePriceEur, marketSampleSize, marketConfidenceOptional market statistics for the make and model (cars)
previousPrice, priceChange, priceChangePct, changeTypeprice-change rows: old price, difference, percent, price-drop or price-increase
sellerLogin, businessPlan, sellerSince, socialLinks, openingHours, branches, vehicleCountseller rows: login, plan, member since, links, hours, branches with coordinates and number of vehicles

Sample output

A real vehicle row from a cloud run (description and photo list shortened):

{
"imageUrl": "https://i.simpalsmedia.com/999.md/BoardImages/900x900/e6042200f50e9a6703e27565c566b449.jpg",
"recordType": "vehicle",
"title": "BMW X5",
"listingId": "60569007",
"url": "https://999.md/ro/60569007",
"sourceSite": "999.md",
"country": "MD",
"listingType": "sale",
"vehicleType": "car",
"make": "BMW",
"model": "X5",
"generation": "G05 (2018 - prezent)",
"year": 2021,
"bodyType": "suv",
"fuelType": "diesel",
"transmission": "automatic",
"driveType": "4x4",
"steeringSide": "left",
"doors": 5,
"seats": 5,
"engineSize": 2000,
"mileage": 2000,
"mileageUnit": "km",
"condition": "used",
"registration": "moldova",
"originCountry": "euro-zone",
"availability": "in-stock",
"price": 32990,
"currency": "EUR",
"priceEur": 32990,
"priceUsd": 37143.43,
"priceMdl": 663095.7,
"region": "Chișinău mun.",
"description": "Garanție și suport tehnic - 1 an ...",
"images": [
"https://i.simpalsmedia.com/999.md/BoardImages/900x900/e6042200f50e9a6703e27565c566b449.jpg",
"https://i.simpalsmedia.com/999.md/BoardImages/900x900/d0434e6ce17b11272f77cbbe031c7964.jpg"
],
"imageCount": 15,
"videoUrl": "https://i.simpalsmedia.com/video/6e3b59b6-e76f-4e7c-a6e0-4894d5d8c67a/master.m3u8",
"publishedAt": "2019-08-07T07:24:20.000Z",
"updatedAt": "2026-10-19T08:02:03.000Z",
"expiresAt": "2026-11-18T08:02:03.000Z",
"sellerType": "dealer",
"isPrivateSeller": false,
"sellerName": "AUTOPLAZA-BOTANICA",
"sellerUrl": "https://999.md/ro/profile/AUTOPLAZA-BOTANICA",
"isVerifiedSeller": true,
"scrapedAt": "2026-10-19T08:19:59.122Z"
}

A real seller row (dealer profile, shortened):

{
"recordType": "seller",
"sellerLogin": "DiplomatAuto",
"sourceSite": "999.md",
"country": "MD",
"city": "Chișinău",
"address": "str. 31 August 1989 22",
"latitude": 47.0126011360592,
"longitude": 28.84516976004994,
"sellerType": "dealer",
"sellerName": "CARS4RENT SRL",
"sellerUrl": "https://999.md/ro/profile/DiplomatAuto",
"businessPlan": "premium",
"sellerSince": "2020-08-12",
"socialLinks": { "instagram": "https://www.instagram.com/diplomatauto/" },
"vehicleCount": 64,
"scrapedAt": "2026-10-19T08:22:00.983Z"
}

Monitor new ads and price changes

Switch on Only new ads (monitor) and the actor remembers every ad it delivered, in a named key-value store of your own account. Scheduled runs of the same search return only unseen ads. Add Report price changes and a repriced ad comes back once as a price-change row with the old price, the difference and the percentage. Use Monitor name to keep several saved searches apart, and Reset monitor memory to start over. Ads skipped by the monitor are never charged. Keep scheduled searches narrow and sorted by newest, because the site orders ads by their last renewal and a renewed old ad moves to the top.

Market valuation for cars

Add market valuation attaches the site's own statistics for the make and model of each car: median and average price in euro, sample size and confidence. They cover all model years of that model, so read them as a price range for the model and not as a value for the exact year, mileage and trim of one car.

How does it compare with other tools?

A search of the Apify Store on 2026-10-19 for "999.md" and for Moldova classifieds found no other Actor for 999.md. General marketplace and car-portal scrapers cover other sites. This actor adds the 999.md filters, three currencies, the seller profile, price-change rows and monitoring in one place.

999.md Scraper
Source999.md, 14 vehicle sections
Fields87 typed keys, flat, no raw dump
Record typesVehicle ads, price changes, seller profiles
CurrenciesEUR, USD and MDL in every row
MonitoringOnly new ads and price-change rows
AccessPublic endpoint, no login, no proxy

The actor reads publicly visible ads through the endpoint the website itself uses, without a login and without bypassing any protection, and keeps to about four requests per second. The robots.txt of 999.md does not disallow this endpoint. Names, phones and emails of private sellers are never output. Dealer phone numbers appear only when you switch on Include dealer contact details. You are responsible for using the data in line with the site terms and the data protection law that applies to you.

Limits:

  • Some ads show no price (price on request). Those rows carry priceOnRequest: true and no price.
  • Market statistics cover all years of a model, and only cars have them.
  • Sort "newest" follows the site's own order, which is the last renewal date and not the first publication date. Use Published since to keep only ads first published after a date.
  • The electric scooter section also lists accessories and parts.
  • On a vehicle row sellerName is the seller login; the company name is on the seller row.
  • Free Apify plans are limited to 10 results per run.

Use with AI agents (MCP)

Connect the Apify MCP server to Claude, Cursor or another MCP client and this actor appears as a tool: https://mcp.apify.com?tools=RecordsData/999-md-scraper.

Example prompt: "Find the 20 cheapest diesel BMW X5 from 2015 or newer in Chișinău on 999.md and list price, mileage and seller type." The agent sends { "mode": "search", "makes": ["BMW"], "models": ["X5"], "yearFrom": 2015, "fuelTypes": ["diesel"], "regions": ["Chișinău"], "sortBy": "price-asc", "maxItems": 20 } and analyzes the rows.

Run it from code

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('RecordsData/999-md-scraper').call({
mode: 'search',
categories: ['cars'],
makes: ['Toyota'],
priceTo: 8000,
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, items[0].title, items[0].priceEur);

You can also call the actor from the Python client, Make, Zapier or n8n, and schedule it from the Apify Console.

Frequently Asked Questions

Which vehicles does 999.md Scraper cover?

All 14 vehicle sections of 999.md: cars, vans, trucks, buses, motorcycles, bicycles, electric scooters, construction equipment, tractors, combines, trailers, classic cars, watercraft and aircraft. Each row says which type it is in vehicleType.

Do I need a proxy, a login or an API key?

No. The actor sends plain requests to the public endpoint of 999.md and needs no proxy, browser or 999.md account. You only need an Apify account to start runs.

How many ads can I get in one run?

The site sets no practical limit: about 104,800 ads for sale are reachable. Set maxItems to what you need. Free Apify plans are limited to 10 results per run; paid plans use the value you set.

How do I get only the newest ads?

Use sort "newest" with Published since, for example 2026-10-19. The actor stops reading as soon as the ads are older, so a daily run is short. For repeat runs, switch on Only new ads (monitor).

Can I search by make, model and region?

Yes. Add makes such as Toyota or BMW, models of those makes such as Corolla or X5, and regions such as Chișinău, Bălți or Cahul. Names are not case sensitive, and a wrong name returns a free error row with close matches.

Which prices do I get?

price and currency are what the seller set. priceEur, priceUsd and priceMdl give the same price in all three currencies at the rate the site publishes, so you can compare ads listed in different currencies.

Does it return phone numbers and seller names?

For dealers and companies, yes: the seller name and profile address are in every row, and phone numbers when you switch on Include dealer contact details. For private sellers, names, phone numbers and emails are never output.

What is the market valuation?

An option for cars. It adds the median and average price in euro, the sample size and a confidence level that 999.md publishes for the make and model. The statistics cover all model years, so they set a price range and not the value of one specific car.

Can I read one ad or one dealer?

Yes. In urls mode give ad addresses such as https://999.md/ro/105408829, ad numbers, seller profiles such as https://999.md/ro/profile/DiplomatAuto, or a vehicle list address. A sold or removed ad returns one free error row.

Which languages are supported?

Regions, generations and equipment names come in Romanian or Russian; choose with Language. Titles and descriptions are written by the sellers in their own language.

What happens when the search finds nothing or the input is wrong?

A search with no hits ends as succeeded with an empty dataset. A wrong value, such as an unknown make or a filter the section does not have, ends as succeeded with one free error row that explains the problem, so a typo never costs you money.

Support

Questions, a missing field or a feature request: contact.punkrecordsdata@gmail.com. Reviews on the actor page help other people find it.

This actor is an independent tool and is not affiliated with 999.md. It reads only publicly available data.