# SeLoger API scraper — France's largest real-estate portal: property search by town or postcode, keywords, price, surface, rooms, transaction and property type, and the full listing (price, price per m², surface, rooms, energy and GHG class, heating, charges, fees, photos, agency). No account, no browser.

> Search SeLoger (seloger.com) property listings for sale or rent in France: price, price per m², surface, land, rooms, bedrooms, floor, energy class, building year, condition, town, postcode, district, department and region, agency (name, SIREN), photos and a description excerpt. Filter by transaction, property type, town or postcode, keywords in the description, price, surface, rooms, bedrooms and new build; sort by relevance, newest, price, price per m² or surface; paginated.
> ReefAPI engine `seloger` · 2 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/seloger/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/seloger/v1/search — 2 credits
Search SeLoger (seloger.com) property listings for sale or rent in France: price, price per m², surface, land, rooms, bedrooms, floor, energy class, building year, condition, town, postcode, district, department and region, agency (name, SIREN), photos and a description excerpt. Filter by transaction, property type, town or postcode, keywords in the description, price, surface, rooms, bedrooms and new build; sort by relevance, newest, price, price per m² or surface; paginated.

**Parameters:**
- `transaction` (enum, required) — sale or rent. [one of: sale, rent]
- `query` (string, optional) — Keywords searched in the listing description by SeLoger itself (comma-separate several; all must match).
- `property_type` (array, optional) — One or more of apartment, house, land, parking, building, office. Default: all of them. [one of: apartment, house, land, parking, building, office]
- `city` (string, optional) — Town name, e.g. Bordeaux, Lyon, Paris.
- `zipcode` (string, optional) — 5-digit French postcode (takes precedence over city). Without city or zipcode the search covers all of France.
- `price_min` (number, optional) — Lowest price in EUR (monthly rent for rentals).
- `price_max` (number, optional) — Highest price in EUR (monthly rent for rentals).
- `surface_min` (number, optional) — Smallest surface, m².
- `surface_max` (number, optional) — Largest surface, m².
- `rooms_min` (integer, optional) — Fewest rooms (pièces).
- `rooms_max` (integer, optional) — Most rooms (pièces).
- `bedrooms_min` (integer, optional) — Fewest bedrooms.
- `new_build` (boolean, optional) — Sales only. true: new-build only; false: resale and life-annuity only.
- `sort` (enum, optional, default "relevance") — relevance, newest, price_asc, price_desc, price_per_m2_asc, price_per_m2_desc, surface_asc or surface_desc. [one of: relevance, newest, price_asc, price_desc, price_per_m2_asc, price_per_m2_desc, surface_asc, surface_desc]
- `page` (integer, optional, default 1) — Result page (SeLoger serves the first 10,000 results of a search).
- `limit` (integer, optional, default 30) — Rows per page, up to 50.
- `include_pii` (boolean, optional, default false) — Also return the advertiser's phone number and a private owner's name.
- `max_rotations` (integer, optional, default 4) — Upstream attempts on fresh exits before giving up.

**Returns:** listings[]{ad_id, legacy_id, title, url, status, price, currency, price_not_published, published_at, updated_at, location{city, zipcode, district, department, region, country, latitude, longitude, address_published}, seller{type, account_type, name, siren, address, website, profile_url, has_phone}, thumbnail, image_count, images[], description, description_is_excerpt, property{property_type, property_subtype, transaction, is_new_build, surface_m2, land_surface_m2, rooms, bedrooms, bathrooms, shower_rooms, toilets, floor, floors_in_building, elevator, balcony, terrace, garden, pool, cellar, parking, features[], energy_class, energy_class_status, ghg_class, energy_consumption_kwh_m2, ghg_emissions_kg_m2, annual_energy_cost_min, annual_energy_cost_max, heating_type, heating_energy, building_year, condition, orientation, furnished, available_from, price_per_m2, rent_excluding_charges, monthly_charges, charges_included, security_deposit, rental_fees, agency_fees_paid_by, agency_fees, agency_fees_pct, price_excluding_fees, estimated_notary_fees, annual_condo_charges, condo_lots, virtual_tour_url, …}}, count, total, page, limit, has_more, sort_applied, location_applied{place_id, name, type}

**Example request body:**
```json
{
  "transaction": "sale",
  "city": "Bordeaux"
}
```

### POST https://api.reefapi.com/seloger/v1/listing — 1 credit
One SeLoger listing by id or URL: price, price per m², surface, land, rooms, bedrooms, bathrooms, shower rooms, toilets, floor, elevator, balcony, terrace, cellar, parking, energy (DPE) and GHG class with kWh and CO2 figures and the annual energy bill range, heating, building year, condition, furnished, charges, deposit, agency and notary fees, co-ownership charges and lots, transaction and property type, town, postcode, district, photos, virtual tour, full description, publication date and the agency (name, SIREN, address, website).

**Parameters:**
- `ad_id` (string, required) — The SeLoger listing id (e.g. 263ZS4QSLYGF), the numeric legacy id (e.g. 283831497) or the full listing URL.
- `include_pii` (boolean, optional, default false) — Also return the advertiser's phone number and a private owner's name.
- `max_rotations` (integer, optional, default 4) — Upstream attempts on fresh exits before giving up.

**Returns:** listing{ad_id, legacy_id, title, url, status, price, currency, price_not_published, published_at, updated_at, location{city, zipcode, district, department, region, country, latitude, longitude, address_published}, seller{type, account_type, name, siren, address, website, profile_url, has_phone}, thumbnail, image_count, images[], description, description_is_excerpt, property{property_type, property_subtype, transaction, is_new_build, surface_m2, land_surface_m2, rooms, bedrooms, bathrooms, shower_rooms, toilets, floor, floors_in_building, elevator, balcony, terrace, garden, pool, cellar, parking, features[], energy_class, energy_class_status, ghg_class, energy_consumption_kwh_m2, ghg_emissions_kg_m2, annual_energy_cost_min, annual_energy_cost_max, heating_type, heating_energy, building_year, condition, orientation, furnished, available_from, price_per_m2, rent_excluding_charges, monthly_charges, charges_included, security_deposit, rental_fees, agency_fees_paid_by, agency_fees, agency_fees_pct, price_excluding_fees, estimated_notary_fees, annual_condo_charges, condo_lots, virtual_tour_url, …}, reference}

**Example request body:**
```json
{
  "ad_id": "263ZS4QSLYGF"
}
```

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

## More
- Try it live, no code: https://reefapi.com/playground?engine=seloger
- Human docs page: https://reefapi.com/docs/seloger
- Overview page: https://reefapi.com/seloger-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
