Skip to main content

Unofficial client for Leboncoin API

Project description

lbc

Latest version GitHub license

Unofficial client for Leboncoin API

import lbc

client = lbc.Client()

location = lbc.City( 
    lat=48.85994982004764,
    lng=2.33801967847424,
    radius=10_000, # 10 km
    city="Paris"
)

result = client.search(
    text="maison",
    locations=[location],
    page=1,
    limit=35,
    sort=lbc.Sort.NEWEST,
    ad_type=lbc.AdType.OFFER,
    category=lbc.Category.IMMOBILIER,
    square=[200, 400],
    price=[300_000, 700_000]
)

for ad in result.ads:
    print(ad.url, ad.subject, ad.price)

lbc is not affiliated with, endorsed by, or in any way associated with Leboncoin or its services. Use at your own risk.

Installation

Required Python 3.9+

pip install lbc

Usage

Client

To create client you need to use lbc.Client class

import lbc

client = lbc.Client()

Proxy

You can also configure the client to use a proxy by providing a Proxy object:

proxy = lbc.Proxy(
    host=...,
    port=...,
    username=...,
    password=...
)
client = lbc.Client(proxy=proxy)

Search

To perform a search, use the client.search method.

This function accepts keyword arguments (**kwargs) to customize your query. For example, if you're looking for houses that include both land and parking, you can specify:

real_estate_type=["3", "4"]

These values correspond to what you’d find in a typical Leboncoin URL, like:

https://www.leboncoin.fr/recherche?category=9&text=maison&...&real_estate_type=3,4

Here's a complete example of a search query:

client.search(
    text="maison",
    locations=[location],
    page=1,
    limit=35,
    limit_alu=0,
    sort=lbc.Sort.NEWEST,
    ad_type=lbc.AdType.OFFER,
    category=lbc.Category.IMMOBILIER,
    owner_type=lbc.OwnerType.ALL,
    search_in_title_only=True,
    square=[200, 400],
    price=[300_000, 700_000],
)

Alternatively

You can also perform search using a full Leboncoin URL:

client.search(
    url="https://www.leboncoin.fr/recherche?category=9&text=maison&locations=Paris__48.86023250788424_2.339006433295173_9256&square=100-200price=500000-1000000&rooms=1-6&bedrooms=3-6&outside_access=garden,terrace&orientation=south_west&owner_type=private",
    page=1,
    limit=35
)

If url is provided, it overrides other keyword parameters such as text, category, locations, etc. However, pagination parameters like page, limit, and limit_alu are still applied.

Location

The locations parameter accepts a list of one or more location objects. You can use one of the following:

  • lbc.Region(...)
  • lbc.Department(...)
  • lbc.City(...)

Each one corresponds to a different level of geographic granularity.

City example

location = lbc.City(
    lat=48.85994982004764,
    lng=2.33801967847424,
    radius=10_000,  # in meters
    city="Paris"
)

Region / Department example

from lbc import Region, Department

region = Region.ILE_DE_FRANCE
department = Department.PARIS

403 Error

If you encounter a 403 Forbidden error, it usually means your requests are being blocked by Datadome. To resolve this:

  • Try reducing the request frequency (add delays between requests).
  • If you're using a proxy, make sure it is clean and preferably located in France.

Using residential or mobile proxies can also help avoid detection.

License

This project is licensed under the MIT License.

Support

Buy Me A Coffee

You can contact me via Telegram or Discord if you need help with scraping services or want to write a library.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lbc-1.0.3.tar.gz (15.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lbc-1.0.3-py3-none-any.whl (15.8 kB view details)

Uploaded Python 3

File details

Details for the file lbc-1.0.3.tar.gz.

File metadata

  • Download URL: lbc-1.0.3.tar.gz
  • Upload date:
  • Size: 15.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for lbc-1.0.3.tar.gz
Algorithm Hash digest
SHA256 c9be246b229bd25d36d3020d72ced26838fa59fc09e164fa61a7da0762405e5c
MD5 e96a39e47e7ecd9f9fc1e15e7ed9b871
BLAKE2b-256 6731c20baf024ff03ffa66ad8563c74961cb96d1e7aa4edb04f26780cdc2274e

See more details on using hashes here.

File details

Details for the file lbc-1.0.3-py3-none-any.whl.

File metadata

  • Download URL: lbc-1.0.3-py3-none-any.whl
  • Upload date:
  • Size: 15.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.12.8

File hashes

Hashes for lbc-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 2936fee008a131a9f0f3ca3ddedadc487f47ffb11e47d1c40ab797e2ac96fff5
MD5 b42849cf3ee6560c5e32421f978d2589
BLAKE2b-256 bba7ae7ed1bbf9da3ab2b0585c972f8a862024a087b4da61701f5b3b72d4cef7

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page