Quick answer: Use the Mobile.bg Bulgaria Car Scraper on Apify. Paste a filtered Mobile.bg search URL (or leave it empty for the default cars-and-jeeps feed), set
maxResults, and the Actor returns structured rows — price in EUR and BGN, make, model, year, mileage, fuel, gearbox, engine power, body type, colour, and seller — as a JSON or CSV dataset. No API key needed.
Why scrape Mobile.bg?
Mobile.bg is Bulgaria's largest used-car marketplace and the primary venue for Bulgarian used-car transactions. It carries tens of thousands of listings from private sellers and dealers, priced in both EUR and BGN (Bulgarian lev). Bulgaria is adopting the euro, so the site exposes dual-currency pricing natively — the price field is in EUR and price_bgn carries the lev equivalent.
Mobile.bg publishes no public API. The site is served in Windows-1251 encoding — the Cyrillic character set that predates UTF-8 adoption in Eastern Europe. Getting clean, correctly decoded data out of it requires handling that encoding correctly, matching the browser's TLS fingerprint so the site does not block automated requests, and mapping Bulgarian-language spec labels to standard field names. The Actor handles all of that.
What fields does the scraper return? 🔥
Every row maps to the ResultRow Pydantic model in the Actor source. Here is a realistic sample:
{
"listing_id": "11772628462288076",
"listing_url": "https://www.mobile.bg/obiava-11772628462288076-audi-a3-s-line-s3",
"title": "Audi A3 S-line S3",
"make": "Audi",
"model": "A3",
"year": 2010,
"price": 7600,
"currency": "EUR",
"price_bgn": 14864,
"mileage_km": 255000,
"fuel_type": "Дизелов",
"transmission": "Ръчна",
"engine_power_hp": 140,
"engine_size_cc": 2000,
"body_type": "Хечбек",
"color": "Бял",
"first_registration": "октомври 2010",
"location": "гр. Варна",
"region": null,
"seller_type": "private",
"seller_name": null,
"photo_urls": [
"//mobistatic1.focus.bg/mobile/photosorg/076/1/11772628462288076_t4.webp"
],
"description": "Audi A3 2.0 TDI ...",
"posted_date": "НОВА ОБЯВА",
"scraped_at": "2026-06-02T10:00:00+00:00"
}
The complete field set is: listing_id, listing_url, title, make, model, year, price, currency (always EUR), price_bgn, mileage_km, fuel_type, transmission, engine_power_hp, engine_size_cc, body_type, color, first_registration, location, region, seller_type, seller_name, photo_urls, description, posted_date, and scraped_at. Fields tagged enrichment-only (location, region, seller_type, seller_name) are populated when enrichDetails is true.
A note on Cyrillic values: fuel type, gearbox, body type, and colour are returned in their original Bulgarian text (e.g. Дизелов, Автоматична, Хечбек). The column names are standard English, so your pipeline can process them without knowing Bulgarian — just map the Cyrillic values if you need English labels in your output.
What does it cost to scrape Mobile.bg listings? 💰
Pricing is Pay-Per-Event.
| Event | Price |
|---|---|
actor-start (one-off per run) |
$0.05 |
result-row (per car listing) |
$0.002 |
1,000 results in a single run costs $2.05 ($0.05 start + 1,000 × $0.002). Every new Apify account gets $5 of free credit — enough for two full runs of 1,000 listings before you spend anything. No credit card required to start.
How does the anti-blocking work?
Mobile.bg is a Windows-1251 encoded site with anti-bot protections on its listing pages. We handle the blocks:
- We rotate Chrome, Firefox, and Safari TLS fingerprints using
curl-cffibrowser impersonation — the site sees a real-browser handshake, not a Python HTTP client. - We decode the Windows-1251 Cyrillic encoding correctly on every response before parsing, so you never get garbled text in
fuel_type,body_type, ordescription. - We rotate residential proxy sessions through Apify Proxy on every block — a fresh session ID and a fresh Bulgarian exit IP, automatically.
- We retry on 408, 429, and 5xx responses with exponential backoff (starting at two seconds, capping at thirty, up to five attempts per page), honouring
Retry-Afterheaders. - Partial runs surface with a clear status message; we never return empty data with a green status.
How to run the scraper from Python
Install apify-client and call the Actor:
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_API_TOKEN")
run_input = {
"searchUrl": "https://www.mobile.bg/obiavi/avtomobili-dzhipove/bmw",
"maxResults": 150,
"enrichDetails": True,
"proxyConfiguration": {
"useApifyProxy": True,
"apifyProxyGroups": ["RESIDENTIAL"],
},
}
run = client.actor("DevilScrapes/mobile-bg-bulgaria-cars").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(
item["make"], item["model"], item["year"],
item["price"], "EUR", "/", item["price_bgn"], "BGN",
item["mileage_km"], "km"
)
To target a specific make or model, apply filters on mobile.bg and paste the resulting URL into searchUrl. Leave searchUrl empty to scrape the default cars-and-jeeps feed. Turn enrichDetails off to halve the request count — you still get make, model, year, price (both EUR and BGN), mileage, fuel, gearbox, engine power and size, body type, colour, and photos from the listing cards.
What are the main use cases?
Cross-border arbitrage: Bulgaria vs Western Europe 💡
Bulgaria's used-car prices are among the lowest in the EU. A dataset of Mobile.bg listings filtered by make, year, and mileage_km, compared against equivalent data from coches.net, leboncoin, or Marktplaats, reveals the price delta for specific models. Importers use this to source vehicles for resale in higher-price markets.
EUR/BGN dual-currency price tracking
Bulgaria is in the process of euro adoption. Mobile.bg already shows both prices. The price (EUR) and price_bgn (BGN) fields let you track market pricing through the currency transition — useful for financial modelling and policy research.
Depreciation modelling: price vs mileage vs age
Pull a broad dataset for a specific model (e.g. all Volkswagen Passat listings), export to CSV, and fit a regression. The year, mileage_km, engine_power_hp, and transmission fields give you the standard independent variables. Bulgarian private-seller pricing tends to be less filtered by dealer margin, which produces more signal for depreciation studies.
Dealer intelligence
Filter seller_type to dealer (requires enrichDetails: true), segment by location, and you have a directory of active Bulgarian car dealers with their listed inventory. Track price changes across successive runs.
Fresh listings monitoring
The posted_date field carries Mobile.bg's own relative posting marker (e.g. НОВА ОБЯВА — "new listing"). Run the Actor daily and filter to new listings to catch fresh private-seller posts before they attract attention.
FAQ
Is it legal to scrape Mobile.bg?
The Actor accesses publicly visible listing data — the same data any browser user sees without logging in. Mobile.bg's terms of service govern automated access; review them for your jurisdiction and use case before running at scale. We recommend responsible pacing and legitimate analytical use.
The fuel type and body type values are in Bulgarian — can I translate them?
The column names (fuel_type, body_type, transmission, color) are standard English. The values are preserved in the original Bulgarian so nothing is lost. Common mappings: Дизелов → Diesel, Бензинов → Petrol, Електрически → Electric, Ръчна → Manual, Автоматична → Automatic, Хечбек → Hatchback, Седан → Sedan, Комби → Estate/Wagon.
What currency are prices in?
price is always in EUR and currency is always EUR. price_bgn carries the Bulgarian-lev equivalent shown on the site. If price_bgn is null, the listing did not show a lev amount.
What does enrichDetails add?
Setting enrichDetails: true fetches each listing's detail page for the full technical table, exact engine displacement, the seller's city (location), and seller_type. Without enrichment you still get make, model, year, price (EUR + BGN), mileage, fuel, gearbox, engine power and size, body type, colour, and photos from the listing card.
How much does a run of 2,000 listings cost?
$0.05 (start) + 2,000 × $0.002 = $4.05.
Start collecting Bulgarian car listing data
The Mobile.bg Bulgaria Car Scraper is live on the Apify Store. Click Try for free — $5 of credit included, no card required.
Your first dataset exports to JSON or CSV in minutes. If you hit an edge case or need a field added, open an issue on the Actor's Issues tab and we'll address it in the next weekly release.
Resources:
Top comments (0)