Skip to main content

lbc

Latest version PyPI - Downloads 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.10+

pip install lbc

Usage

Start with the examples to quickly understand how to use the library in real-world scenarios.

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:

# Setup proxy1
proxy1 = lbc.Proxy(
    host="127.0.0.1",
    port=12345,
    username="username",
    password="password",
    scheme="http",
)

# Initialize client with proxy1
client = lbc.Client(proxy=proxy1)

# Setup proxy2
proxy2 = lbc.Proxy(
    host="127.0.0.1",
    port=23456,
)

# Change client proxy to proxy2
client.proxy = proxy2

# Remove proxy
client.proxy = None

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.

Multiple Search

You can pass a list of values to search for multiple terms at once.

The values are converted into a Leboncoin OR query. For example:

client.search(text=["Laptop", "Desktop"])

This generates a search equivalent to:

Laptop OR Desktop

This can be useful for combining multiple keywords into a single search query without having to perform separate requests.

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.

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.1.5.tar.gz (16.1 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.1.5-py3-none-any.whl (20.7 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: lbc-1.1.5.tar.gz
  • Upload date:
  • Size: 16.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for lbc-1.1.5.tar.gz
Algorithm Hash digest
SHA256 9ff51a449e8cb41a48e2d6ba7ab947a0737e663a6e2bacc74b6367843f4be870
MD5 b6cfb0396e2925949a86fef92ab6b091
BLAKE2b-256 8d8a9a32c0148bdf81861b322c7624ffa33468e0aa073a355ec7d5cc327ddcbd

See more details on using hashes here.

File details

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

File metadata

  • Download URL: lbc-1.1.5-py3-none-any.whl
  • Upload date:
  • Size: 20.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for lbc-1.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 714d8e83763cc9105230a905f07ee8ff46232daf362f81c67b9f954347c98e54
MD5 6fe53b73947cfca33636bab5e1a1ce7d
BLAKE2b-256 ba77c19e86fc579614d5f59a8227e07e9e6b6d91c7773c4d432fd931baaf9ab3

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

1.1.5 This release

2 files

1.1.4

2 files

1.1.3

2 files

1.1.2

2 files

1.1.1

2 files

1.1.0

2 files

1.0.10

2 files

1.0.9

2 files

1.0.8

2 files

1.0.7

2 files

1.0.6

2 files

1.0.5

2 files

1.0.4

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

Supported by

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