SS.lv Scraper - Latvia Property Listings & Prices
Pricing
from $3.54 / 1,000 property searches
SS.lv Scraper - Latvia Property Listings & Prices
Scrape SS.lv property listings across Latvia: asking price or monthly rent, rooms, area, floor, series, photos, coordinates and full advert text. Latvia's largest classifieds portal, in Latvian.
Pricing
from $3.54 / 1,000 property searches
Rating
0.0
(0)
Developer
SIÁN OÜ
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
SS.lv Scraper - Latvia Property Listings & Prices 🚀
🎉 Every SS.lv property advert, in Latvian, sale and rent separated for you
For analysts pricing the Latvian market, agencies sourcing stock, and anyone tired of scrolling Rīga's 150 pages by hand
🔎 What is the SS.lv Latvia Property Scraper — and when should you use it?
The SS.lv Latvia Property Scraper turns public SS.lv property adverts from anywhere in Latvia into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.
Use it when you need: Latvian sale and rental adverts as rows: asking price or monthly rent, rooms, area, floor, building height, the Soviet-era build series, district and street, a photo and the advert URL. SS.lv mixes sale and rental adverts in one feed and this Actor reads the deal type off the price text, so a rents-only run works on the first press of Start. Switch on full details and each row also carries the untruncated advert text, the complete photo set, the attribute table (house type, comforts), the publication date and the advert's own map coordinates.
Use something else when: the property is not in Latvia. Use Aruodas Scraper for Lithuania's property market on the country's #1 portal, one border away, with the same row shape. Use Imot.bg Scraper for Bulgaria's longest-running classifieds portal, sale and rental, with price per square metre already computed. Use Hemnet Scraper for Sweden's market leader — Nordic asking prices, fee and monthly cost in one row. This actor covers the six city-first property sections of ss.lv — flats, houses and summer residences, farmsteads, offices, land and forest — across every top-level area the site indexes, plus its abroad-residence sections. The Telpas (premises) section uses a different address shape and is out of scope in this version, though its adverts remain reachable by URL through Property Detail, and so is sold history, because the site publishes only what is currently on the market.
🤖 Use with AI agents
Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/ss-property-scraper
Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.
Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:
I want property adverts and asking prices from SS.lv using the Apify Actor `sian.agency/ss-property-scraper`.Use it when I need: Latvian sale and rental adverts as rows: asking price or monthly rent, rooms, area, floor, building height, the Soviet-era build series, district and street, a photo and the advert URL. SS.lv mixes sale and rental adverts in one feed and this Actor reads the deal type off the price text, so a rents-only run works on the first press of Start. Switch on full details and each row also carries the untruncated advert text, the complete photo set, the attribute table (house type, comforts), the publication date and the advert's own map coordinates.Don't use it when: the property is not in Latvia — use aruodas-property-scraper or imot-property-scraper or hemnet-property-scraper instead.How to call it: pick a `section` (flats is the deep one) and give `locations` a list of SS.lv areas (`riga`, `jurmala`, `riga-region` — the picker lists all 31). Narrow with `dealType` (`sale`, `rent` or `all`), `minPrice`, `maxPrice`, `minArea`, `maxArea` or `minRooms` — anything a filter excludes is never saved and never billed. `maxResults` is the budget for the whole run and is shared across the areas you picked, so three areas each get roughly a third rather than the first taking everything. `includeDetails` opens each advert for its full text, every photo and the map coordinates, for an extra charge per listing. To follow a single district such as Centrs or Imanta, paste its ss.lv address into `searchUrls`; to expand adverts you already have, set `operation` to `detail` and pass `listingUrls`.Start with this input:{"operation": "search","section": "flats","locations": ["riga"],"dealType": "sale","maxResults": 200}Ask me which parts of Latvia to cover, whether the run should keep sale adverts, rentals or both, and whether the full advert text and map coordinates are worth the extra per-listing charge, then run the Actor and summarise the results as a table, then run the Actor and summarise the results as a table.
Things you can ask your agent for:
- Pull every two-bedroom flat for sale in Rīga under €200,000 and rank the districts by median price per square metre.
- Give me this week's new rental adverts in Jūrmala with the monthly price and a photo for each.
- Compare asking prices per square metre across Rīga, Jūrmala and the Rīga commuter belt in one table.
Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/ss-property-scraper.md.
📋 Overview
SS.lv is where Latvia's property market actually happens. The country's #1 site overall at 5.4 million visits a month — ahead of every dedicated property portal — it is the default place a Latvian seller posts a flat, a house or a plot, from Rīga agency chains down to owners posting a phone number. This Actor reads it the way the site publishes it and hands you the rows.
Why professionals choose us:
- ✅ Sale and rent in one feed, separated for you: SS.lv mixes the two and writes the difference into the price (€/mēn. is a monthly rent); this Actor reads that and stamps every row, so a rents-only run works the first time
- ⚡ 30 listings per request: a 1,000-listing sweep of Rīga is 34 requests and finishes in a couple of minutes
- 🎯 Latvian that survives the trip: UTF-8 end to end, so Rīga, Ķengarags and Šķirotava arrive readable in JSON, CSV and Excel alike
- 💰 $4.00 per 1,000 listings: 20% under the only SS.lv Actor with traction, with a richer row
- 📍 Coordinates on request: full details lifts each advert's map coordinates from the advert's own map link — no geocoder needed
- 🧱 Series and house type: the Soviet-era build series (Lt proj., 602. series) SS.lv prints on the card comes through on every flats row
✨ Features
- 🔍 Two operations in one Actor: search SS.lv's listing pages, or expand specific adverts by URL
- 🇱🇻 Every area SS.lv indexes: Rīga, Jūrmala, Rīgas rajons and all 22 regional areas, picked from a list rather than typed
- 🏘️ Six property sections: flats, houses and summer residences, farmsteads, offices, land and forest
- 🤝 Deal type on every row: sale or monthly rent, read from the price text the site itself prints
- 🎚️ Filters that cost nothing: price band, area, rooms, deal type — excluded adverts are never saved and never charged
- 📄 Full details as a paid add-on: untruncated advert text, every photo, the attribute table, the publication date and the map coordinates
- 🔗 Paste a URL instead: any SS.lv listing address works, including the 49 district pages under Rīga
- 📊 Run report included: a copy-ready list of advert links, a median price and the itemised charge statement in every run
🎬 Quick Start
Pick an area, press Start. The defaults return Rīga flat listings, so a run with no configuration at all still gives you real data. Everything below is optional narrowing.
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~ss-property-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"operation":"search","section":"flats","locations":["riga"],"maxResults":100}'
🚀 Getting Started (3 Simple Steps)
Step 1: Choose your section and areas
Pick the property section (flats is the deepest) and one or more areas from the list. Rīga and Jūrmala exist for most sections; a pair the site does not publish is rejected before anything runs.
Step 2: Narrow if you want to
Set the deal type to sale or rent, add price, area or room bounds. Nothing a filter excludes is saved or charged.
Step 3: Press Start, then export
Watch the run log count the pages. When it finishes, download JSON, CSV or Excel from the dataset, or open the HTML report for a summary with the advert links already collected.
That's it! In under two minutes, you'll have:
- Every matching listing with price, deal type, rooms, area, floor and series
- A copy-ready list of advert links
- With full details on: the complete advert text, every photo and the map coordinates
📥 Input Configuration
| Field | Type | Required | Description |
|---|---|---|---|
operation | string | No | search (default) or detail |
section | string | No | flats (default), homes-summer-residences, farms-estates, offices, plots-and-lands, wood |
locations | array | No | SS.lv areas, e.g. riga, jurmala, riga-region — defaults to Rīga |
maxResults | integer | No | Whole-run listing budget, default 100, shared across the areas |
dealType | string | No | all (default), sale or rent |
minPrice / maxPrice | integer | No | Price bounds in euros; 0 means no bound |
minArea / maxArea | integer | No | Area bounds in square metres; 0 means no bound |
minRooms | integer | No | Minimum room count; 0 means no minimum |
includeDetails | boolean | No | Open each advert for the full text, all photos and the coordinates |
searchUrls | array | No | SS.lv listing addresses, including district pages |
listingUrls | array | No | SS.lv advert addresses, for the detail operation |
Example:
{"operation": "search","section": "flats","locations": ["riga", "jurmala"],"dealType": "sale","maxPrice": 200000,"maxResults": 500}
Rental monitoring on a schedule:
{"operation": "search","section": "flats","locations": ["riga"],"dealType": "rent","maxResults": 300}
Expand specific adverts:
{"operation": "detail","listingUrls": [{ "url": "https://www.ss.lv/msg/lv/real-estate/flats/riga/centre/adbgb.html" }]}
📤 Output
Results are saved to the Apify dataset with 30+ fields, including:
| Field | Type | Description |
|---|---|---|
listingId | string | SS.lv advert id (the tr_ number on the listing table) |
propertyTitle | string | The advert headline, in the language its author wrote it |
url | string | Canonical advert address |
price | number | Asking price, or monthly rent for a rental |
currency | string | EUR on every priced row |
priceText | string | The price exactly as the site shows it |
pricePerSqm | number | Price per square metre, from the advert page (includeDetails) |
dealType | string | sale or rent, read from the price text |
rooms / area | number | Rooms and area in m², as the card shows them |
floor / totalFloors | number | Floor number and floors in the building |
series | string | The build series SS.lv prints for flats (Lt proj., 602., …) |
houseType / comforts | string | Attribute-table entries (includeDetails) |
district / street / city | string | Where the property is |
lat / lon | number | Map coordinates from the advert's own map link (includeDetails) |
photos / photoCount | array, number | Photo URLs and how many there are (includeDetails) |
descriptionText | string | The seller's full advert text (includeDetails) |
publishedAt | string | When the advert was posted (includeDetails) |
searchedLocation / searchUrl | string | Which run and address produced the row |
Example:
{"listingId": "58024258","url": "https://www.ss.lv/msg/lv/real-estate/flats/riga/centre/adbgb.html","propertyTitle": "Jūsu uzmanībai stilīgs 3 istabu dzīvoklis pilsētas centrā pēc kapitālā remonta.","district": "centrs","street": "Lugažu 6","dealType": "sale","price": 97000,"currency": "EUR","priceText": "97 000 € (1 564.52 €/m²)","pricePerSqm": 1564.52,"rooms": 3,"area": 62,"floor": 4,"totalFloors": 5,"series": "LT proj.","houseType": "Paneļu","photoCount": 8,"lat": 56.974974,"lon": 24.109142,"publishedAt": "2026-09-07T01:27:00"}
💼 Use Cases & Examples
1. Latvian asking-price index
A property analyst measuring what a district really asks per square metre.
Input: Rīga plus Jūrmala and the commuter belt, a high maxResults
Output: every listing with price, area, rooms and floor, grouped by district in the export
Use: build the district index that SS.lv's own page averages cannot give you
2. Rental market monitoring
A property manager keeping a rent roll current.
Input: dealType: "rent", your areas, a schedule
Output: only the rental stock, priced in € per month, each row labelled rent
Use: the same run every morning, with nothing else mixed in
3. New-listing alerts
A buying agent who needs to see today's stock today.
Input: your saved areas on a daily schedule Output: the newest adverts first — SS.lv serves its feeds newest-first Use: keep the advert IDs you have seen; anything new in the export appeared since yesterday
4. Buyer shortlists with coordinates
A relocation service building a map for a client.
Input: includeDetails: true, a price band, a room minimum
Output: rows carrying the advert's own latitude and longitude, every photo and the full text
Use: feed the rows straight into a map — no geocoding step at all
5. District-level comparisons
An analyst comparing Centrs against Imanta.
Input: district addresses pasted into searchUrls, one per line
Output: one sweep per district, same row shape, in one run
Use: per-district price bands without building anything yourself
🔗 Integration Examples
JavaScript/Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('sian.agency/ss-property-scraper').call({operation: 'search',section: 'flats',locations: ['riga'],dealType: 'sale',maxResults: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items[0]);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('sian.agency/ss-property-scraper').call(run_input={'operation': 'search','section': 'flats','locations': ['jurmala'],'dealType': 'rent','maxResults': 200,})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item['propertyTitle'], item['price'], item['dealType'])
cURL
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~ss-property-scraper/runs?token=YOUR_TOKEN' \-H 'Content-Type: application/json' \-d '{"operation":"search","section":"flats","locations":["riga"],"dealType":"rent","maxResults":150}'
Automation Workflows (N8N / Zapier / Make)
- Trigger: a daily schedule, or a webhook from your own system
- HTTP Request: call the Actor's run-sync endpoint with your saved input
- Process: split the rows on
dealType, or group bydistrict - Action: append to a sheet, upsert into your CRM, or post the new adverts to Slack
📊 Performance & Pricing
FREE Tier (Try It Now)
- 25 listings per run, with every field and every filter available
- No credit card required
- Enough to check the data before you commit to a sweep
PAID Tier (Production Ready)
- Unlimited listings per run, bounded only by your
maxResultsbudget - Pay-per-result: charged per listing saved, never for an advert your filters excluded
- Full details available as a per-listing add-on, only when you switch it on
💰 $4.00 per 1,000 listings, which is 20% below the leading SS.lv Actor on the Store. Deal type, series, district, street and the full attribute table all sit on the same row.
❓ Frequently Asked Questions
Q: How many listings can I get per run?
A: FREE tier: 25 per run. PAID tier: as many as you budget for. Rīga's flat feed alone runs to 150+ pages of 30, so the practical limit is your maxResults.
Q: Will the Latvian text come through correctly? A: Yes. SS.lv is published in UTF-8 end to end, so every diacritic arrives intact in the dataset, in every export and in the HTML report. Russian-language adverts appear exactly as the site mixes them in.
Q: How do sale and rental adverts work here?
A: SS.lv keeps them in one feed, and the price text tells you which is which: a rent reads "€/mēn." (per month) while a sale reads a plain euro figure. Every row carries a dealType, and the dealType filter keeps only the kind you want.
Q: What is the difference between a listing row and full details? A: A listing row carries everything on the card: price, deal type, rooms, area, floor, series, district, street and a photo. Full details opens the advert itself and adds the untruncated text, every photo, the house type and comforts, the publication date and the map coordinates.
Q: Can I follow a single Rīga district? A: Yes, through Search URLs. Open the district page on ss.lv — for example https://www.ss.lv/lv/real-estate/flats/riga/centre/ — and paste the address. The Areas list covers cities and regions; a pasted address reaches anything the site publishes.
Q: What happens to an advert that has been withdrawn? A: SS.lv answers a dead advert with a normal-looking page that has nothing in it. The Actor recognises that, writes a row saying the listing could not be found, and does not charge you for it.
Q: Does it cover SS.com or the Russian version of the site? A: SS.com is the same portal under a different name, and the Russian pages are the same adverts at /ru/ addresses. This Actor reads the Latvian site — where both languages appear in the feed — and reports each advert in the language its author wrote it in.
Q: What output formats are available? A: JSON, CSV, Excel and XML. Export straight from the Apify dataset, or read them over the API.
🐛 Troubleshooting
A run returns fewer listings than expected
- The budget is shared across the areas you picked — three areas each get roughly a third of
maxResults - Raise
maxResults, or run the areas one at a time if you need the full depth of each
A filter returned nothing
- Check the combination exists: price bounds exclude adverts where SS.lv publishes no number, and a tight bound on a thin area can empty the result
- Nothing filtered out is charged, so an empty run costs you the run-start fee and nothing else
An area name was rejected
- The picker lists what SS.lv actually indexes; Rīga has no Forest or Farmsteads section, and the abroad areas belong to the residence sections
- A single district is reached by pasting its ss.lv address into Search URLs instead
A listing URL comes back as not found
- The advert has been sold, rented or withdrawn; SS.lv keeps the address alive but empties the page
- Re-run the search to pick up what is live today
⚖️ Is it legal to scrape data?
Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.
However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
You can also read Apify's blog post on the legality of web scraping.
SS.lv and SS.com are trademarks of SIA SS. This Actor is not affiliated with, endorsed by, or sponsored by SS.lv or SIA SS.
🤝 Support
Join our active support community
- For issues or questions, open an issue on the Actor's issues page
- Check SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools