SeLoger Property Listings Scraper
Pricing
Pay per event
SeLoger Property Listings Scraper
Extract SeLoger listings with prices, locations, agencies, images, descriptions, and URLs for French real-estate market monitoring.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Export structured property listings from public SeLoger search pages.
Use this actor to collect rental and sale inventory from SeLoger result URLs and turn each listing card into a clean dataset with price, area, rooms, location, agency, images, description, and the listing URL.
What does SeLoger Property Listings Scraper do?
SeLoger Property Listings Scraper reads public SeLoger search/category result pages and extracts the embedded listing data that powers the search experience.
It is built for repeatable real-estate market monitoring workflows:
- 🏠 Collect property listings from SeLoger city or neighborhood searches
- 💶 Export asking prices, price periods, and price per square meter
- 📍 Capture city, postal code, district, and agency information
- 🖼️ Save listing image and floor-plan URLs
- 🔁 Run the same searches regularly to monitor inventory changes
Who is it for?
This scraper is useful for teams that need French property market data without manually browsing SeLoger.
Typical users include:
- Real-estate analysts tracking local asking prices
- Proptech teams building market dashboards
- Brokerages monitoring competitor inventory
- Investors watching rental supply and sale listings
- Data teams enriching internal property databases
- Journalists and researchers studying French housing markets
Why use this actor?
SeLoger pages contain rich listing data, but copying it manually is slow and error-prone.
This actor gives you:
- Clean JSON/CSV/Excel-ready rows
- Stable field names for downstream pipelines
- Configurable result limits
- Multiple start URLs in one run
- Optional Apify Proxy support if your run environment needs it
- Pay-per-event pricing so small tests stay inexpensive
How it works
The actor uses an HTTP-first Cheerio approach.
Public SeLoger result pages include embedded search-result JSON in the page HTML. The actor fetches each start URL, parses the embedded __UFRN_FETCHER__ data, maps listing IDs to normalized records, and stores those records in the default Apify dataset.
Supported pages
Use public SeLoger search or category URLs such as:
https://www.seloger.com/immobilier/locations/immo-paris-75/https://www.seloger.com/immobilier/locations/immo-lyon-69/https://www.seloger.com/immobilier/locations/immo-marseille-13/- Other public SeLoger search result pages that expose listing data in the initial HTML
Input
The actor accepts a small set of practical controls.
| Field | Type | Description |
|---|---|---|
startUrls | array | SeLoger search/category URLs to scrape |
maxItems | integer | Maximum listing rows to save across all URLs |
includeSuggestedListings | boolean | Include suggested/promoted listings when present |
maxImages | integer | Maximum image URLs saved per listing |
useApifyProxy | boolean | Enable Apify Proxy if direct access is blocked |
proxyCountryCode | string | Optional proxy country code, for example FR |
Example input
{"startUrls": [{ "url": "https://www.seloger.com/immobilier/locations/immo-paris-75/" },{ "url": "https://www.seloger.com/immobilier/locations/immo-lyon-69/" }],"maxItems": 60,"includeSuggestedListings": true,"maxImages": 5,"useApifyProxy": false}
Output
Each dataset item represents one SeLoger property listing.
| Field | Description |
|---|---|
listingId | SeLoger listing identifier |
legacyId | Legacy SeLoger listing ID when available |
title | Listing title |
enrichedTitle | SeLoger enriched title/category |
transactionType | Rent/sale distribution type from SeLoger data |
propertyType | Property type label |
price | Numeric asking price |
priceText | Formatted price text |
pricePeriod | Price period such as /mois |
pricePerSqm | Calculated price per square meter |
areaSqm | Living area in square meters |
rooms | Number of rooms |
bedrooms | Number of bedrooms |
floor | Floor text when present |
keyFacts | SeLoger listing key facts |
city | City or arrondissement |
zipCode | Postal code |
district | District/neighborhood |
address | Agency address when available |
agencyName | Agency or intermediary name |
agencyType | Agency/private owner type |
agencyProfileUrl | SeLoger agency profile URL |
phoneNumbers | Visible phone numbers when exposed in page data |
listingUrl | Canonical listing URL |
images | Listing image URLs |
floorPlans | Floor-plan image URLs |
description | Listing description snippet |
energyClass | Energy class |
isNew | Whether SeLoger marks the listing as new |
isExclusive | Whether SeLoger marks the listing as exclusive |
has3DVisit | Whether a 3D visit is available |
createdAt | SeLoger creation timestamp |
updatedAt | SeLoger update timestamp |
sourceUrl | Search URL where the listing was found |
scrapedAt | Actor scrape timestamp |
Example output
{"listingId": "267XBCWFAQSS","legacyId": "274524709","title": "Appartement à louer","transactionType": "RENT","propertyType": "Appartement","price": 1235.79,"priceText": "1 236 €/mois","areaSqm": 35.22,"rooms": 2,"bedrooms": 1,"city": "Paris 20ème arrondissement","zipCode": "75020","agencyName": "OQORO","listingUrl": "https://www.seloger.com/annonces/...","sourceUrl": "https://www.seloger.com/immobilier/locations/immo-paris-75/","scrapedAt": "2026-07-10T04:34:34.587Z"}
How much does it cost to scrape SeLoger property listings?
The actor uses pay-per-event pricing.
- Start event: $0.005 per run
- Item event: tiered per saved property listing (BRONZE $0.000028429; FREE $0.000032693; SILVER $0.000022175; GOLD $0.000017057; PLATINUM $0.000011372; DIAMOND $0.00001)
Keep maxItems low for test runs and increase it when you are satisfied with the output.
Tips for best results
- Start with one or two city search URLs.
- Use
maxItemsaround 20-60 for validation runs. - Add more start URLs to collect more than one SeLoger result page worth of data.
- Keep
maxImagesmodest if you only need analytics fields. - Enable Apify Proxy only if direct access is blocked in your environment.
Common workflows
Track Paris rental inventory
Run a Paris rental URL every day and compare listingId, price, and updatedAt across datasets.
Compare city markets
Provide several city URLs, such as Paris, Lyon, Marseille, Toulouse, and Bordeaux, then group output by city and zipCode.
Monitor agency listings
Filter results by agencyName or agencyProfileUrl in your downstream database.
Build price dashboards
Use price, areaSqm, pricePerSqm, rooms, bedrooms, and district to build market snapshots.
Integrations
Export results to:
- Google Sheets for manual review
- BigQuery or Snowflake for analytics
- Airtable for editorial workflows
- Webhooks for listing-change alerts
- A CRM or internal brokerage database
API usage
You can run the actor from the Apify API.
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/seloger-property-listings-scraper').call({startUrls: [{ url: 'https://www.seloger.com/immobilier/locations/immo-paris-75/' }],maxItems: 50,});console.log(`Dataset: https://api.apify.com/v2/datasets/${run.defaultDatasetId}/items`);
Python
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/seloger-property-listings-scraper').call(run_input={'startUrls': [{'url': 'https://www.seloger.com/immobilier/locations/immo-paris-75/'}],'maxItems': 50,})print(run['defaultDatasetId'])
cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~seloger-property-listings-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"startUrls":[{"url":"https://www.seloger.com/immobilier/locations/immo-paris-75/"}],"maxItems":50}'
MCP integration
Use the actor from MCP-compatible tools through Apify MCP.
Claude Code CLI setup:
$claude mcp add apify https://mcp.apify.com/?tools=automation-lab/seloger-property-listings-scraper
Claude Desktop JSON configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?tools=automation-lab/seloger-property-listings-scraper"}}}
Direct MCP tool URL:
https://mcp.apify.com/?tools=automation-lab/seloger-property-listings-scraper
Example prompts:
- "Scrape 50 SeLoger rental listings in Paris and summarize median price per sqm."
- "Collect SeLoger listings from Paris and Lyon and compare bedroom counts."
- "Export SeLoger listing URLs and agency names for this search."
Data quality notes
The actor extracts fields exposed in SeLoger's public search-page data. Some fields are optional and depend on the listing, agency, and SeLoger page variant.
Examples:
- Some listings have no visible phone number.
- Some listings have no floor plan.
- Descriptions may be snippets rather than full detail-page descriptions.
- Search pages usually expose one page of listing cards; use multiple URLs for larger collections.
Troubleshooting
I got no results
Check that your startUrls are public SeLoger search result pages. Detail pages or unsupported URLs may not include the embedded result dataset.
I see blocked or error pages
Try again with fewer URLs. If your run environment is blocked, enable useApifyProxy and set proxyCountryCode to FR.
I need more than one page of results
Add multiple SeLoger category, city, arrondissement, or neighborhood URLs. This MVP extracts the result data present in the initial HTML for each supplied URL.
Legality
This actor extracts publicly available information from SeLoger pages. You are responsible for ensuring your use of the data complies with applicable laws, SeLoger's terms, and privacy requirements. Avoid collecting or using personal data in ways that are not legally permitted.
Related scrapers
You may also find these automation-lab actors useful:
- https://apify.com/automation-lab/zillow-scraper
- https://apify.com/automation-lab/realtor-ca-property-listings-scraper
- https://apify.com/automation-lab/homes-co-nz-property-search-scraper
Limitations
- The actor does not log into SeLoger.
- It does not bypass CAPTCHAs.
- It extracts public search-page data, not every field from detail pages.
- It depends on SeLoger's current embedded HTML data structure.
Changelog
See .actor/CHANGELOG.md for release notes.