Pricing
from $1.20 / 1,000 results
SS.LV Real Estate Scraper
Scrape property listings from SS.LV β Latvia's largest classifieds site.
Pricing
from $1.20 / 1,000 results
Rating
0.0
(0)
Developer
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
SS.LV Scraper
Scrape structured real estate listings from SS.LV β Latvia's largest classifieds platform. No API key required.
Features
- Scrapes all real estate categories: flats, houses, plots, offices, commercial, garages
- JSON-HTML extraction for images (via
msg_img_dir/MAX_NAVIJS vars) and price (MSG_PRICE) β more reliable than CSS scraping - Full-size image URL list built deterministically from embedded JS variables
- GPS coordinates parsed from gmap onclick href
- Language-agnostic
tdo_field IDs for structured property data (works across LV/RU page versions) - Elevator detection from floor field (e.g.
"5/9/lifts") - Price per mΒ² captured from list page
- Pagination handled automatically
- robots.txt compliant β
/lv/paths only (/en/is disallowed) - Deadline-aware exit prevents TIMED-OUT status
Input
{"startUrls":[{"url":"https://www.ss.lv/lv/real-estate/flats/riga/centre/sell/"}],"maxItems":500,"fetchDetails":true}
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | β | Required. SS.LV real estate list URLs (/lv/ prefix only). |
maxItems | integer | 500 | Max total listings to collect across all start URLs. |
fetchDetails | boolean | true | Fetch individual listing pages for full data (GPS, dates, description, all images). Set false for fast list-only scrape. |
URL format
https://www.ss.lv/lv/real-estate/{category}/{city}/{district}/{dealtype}/
Categories: flats Β· homes-summer-residences Β· farms-estates Β· premises Β· offices Β· plots-and-lands Β· wood
Examples:
https://www.ss.lv/lv/real-estate/flats/riga/centre/sell/https://www.ss.lv/lv/real-estate/flats/riga/https://www.ss.lv/lv/real-estate/homes-summer-residences/riga-district/sell/https://www.ss.lv/lv/real-estate/offices/
β οΈ
/en/URLs are disallowed byrobots.txt. The scraper automatically converts them to/lv/.
Output fields
Always present
| Field | Type | Description |
|---|---|---|
id | string | Listing ID (from checkbox value) |
url | string | Full listing URL |
title | string | Ad title text |
operationType | string | sell Β· rent Β· want-to-buy |
country | string | Always "LV" |
priceAmount | integer | Total price in EUR |
priceCurrency | string | Always "EUR" |
pricePerSqm | number | Price per mΒ² (from list page) |
thumbnailUrl | string | Thumbnail image URL |
source | string | Always "ss.lv" |
scrapedAt | string | ISO 8601 scrape timestamp |
contentHash | string | 16-char MD5 of id|price|area for change detection |
Detail page fields (fetchDetails: true)
| Field | Type | Description |
|---|---|---|
city | string | City (tdo_20) |
district | string | District/neighbourhood (tdo_856) |
street | string | Street address (tdo_11) |
lat | number | GPS latitude (from gmap href) |
lng | number | GPS longitude (from gmap href) |
propertyType | string | House type β PaneΔΌu, ΔΆieΔ£eΔΌu, etc. (tdo_2) |
series | string | Building series β Jaun., 104., 602., etc. (tdo_6) |
rooms | number | Number of rooms (tdo_1) |
areaM2 | number | Area in mΒ² (tdo_3) |
floor | integer | Floor number (tdo_4) |
totalFloors | integer | Total floors in building (tdo_4) |
hasElevator | boolean | Elevator present (detected from floor string "5/9/lifts") |
facilities | string | Facilities/features (tdo_1734) |
descriptionText | string | Plain-text description |
descriptionHtml | string | HTML description |
images | string[] | Full-size image URLs (800px), built from msg_img_dir + MAX_NAVI JS vars |
imageCount | integer | Number of images |
agencyName | string | Agency/company name (if present) |
agencyPhone | string | Phone number(s) β partially masked on page load |
publishDate | string | Publish date YYYY-MM-DD |
publishDateISO | string | Publish datetime ISO 8601 (EET +02:00) |
Examples
Apartments for sale in Riga
{"startUrls":[{"url":"https://www.ss.lv/lv/real-estate/flats/riga/all/"}],"maxItems":100}
Rentals under a price cap
{"startUrls":[{"url":"https://www.ss.lv/lv/real-estate/flats/riga/all/hand_over/"}],"maxPrice":500,"maxItems":50}
Recent listings β last 7 days
{"startUrls":[{"url":"https://www.ss.lv/lv/real-estate/flats/riga/all/"}],"daysOld":7,"maxItems":200}
New listings only
{"startUrls":[{"url":"https://www.ss.lv/lv/real-estate/flats/riga/all/"}],"daysOld":1,"maxItems":200}
Technical notes
JSON-HTML extraction
SS.LV has no public REST or GraphQL API. However, the detail page embeds key data as JavaScript variables rendered server-side:
varMSG_PRICE=134800.00;var msg_img_dir ="https://i.ss.lv"+"/images/2026-04-06/β¦/flats-riga-centre-2-";varMAX_NAVI=24;varIMG_SIZE=800;
Images are constructed as: msg_img_dir + N + "." + IMG_SIZE + ".jpg" for N = 1..MAX_NAVI. This is more reliable than scanning img src attributes.
GPS coordinates are extracted from the gmap onclick href:
?c=56.9305608,24.1620358,14
tdo_ field IDs
The options table uses language-agnostic numeric IDs (id="tdo_20"), making parsing robust across Latvian and Russian page variants:
| tdo ID | Field |
|---|---|
| 20 | city |
| 856 | district |
| 11 | street |
| 1 | rooms |
| 3 | area |
| 4 | floor/totalFloors/hasElevator |
| 6 | series |
| 2 | houseType (propertyType) |
| 1734 | facilities |
robots.txt compliance
/en/is fully disallowed β all requests use/lv/paths- Filter/sort URLs (
/fDgSeF4*.html) are disallowed and never generated - Standard crawl delays applied (1β3s Gaussian sleep between list pages, 0.6β1.6s between detail pages)
Related scrapers
Other scrapers in our Real Estate β CEE & Baltics collection:
- Otodom.pl Scraper
- Bezrealitky.cz Real Estate Scraper
- Imobiliare.ro Scraper
- Ingatlan.com Scraper β Hungary Real Estate Listings
- 4zida.rs Scraper
Run it on a schedule
This actor is built for repeat use. Set it to run daily, weekly, or hourly, and the data keeps flowing without you touching it.
- Schedule runs β open the actor, go to Schedules, and pick a cadence. Each run only charges you for the results it returns.
- Connect it to your stack β push results straight to Google Sheets, Slack, a webhook, or your database using Apify Integrations. No glue code needed.
- Pull results via API β every run writes a clean dataset you can fetch with one API call, ready for whatever you build on top of it.
Set it once and it runs on its own.
Need a custom scraper?
Unfenced Group builds Apify actors for any website β for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results β we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl
