PAP Scraper - Private-Seller Listing Data from pap.fr

PAP Scraper
Solutions

Delivery, schedule and scope

You set the scope: a departement, a list of communes, a property type, a price band, or a whole section of the site. We build the PAP scraper, run it on the interval you need and hand back CSV, JSON, XLSX or an API endpoint. Records are keyed on the PAP r id, so repeat runs deduplicate cleanly and you can take a full snapshot or only the delta since the previous one.

Jobs run at a measured rate and within what robots.txt disallows. We do not offer to defeat the challenge page or the captcha the site uses on its forms. When a site change breaks a field, repairing it is our work rather than yours.

What a PAP listing carries

Each detail page embeds a schema.org Product block, so the core commercial fields come out of structured markup rather than guesswork about CSS classes. The rest is read from the page body.

  • prix (price) - a plain integer in EUR inside the structured block. The rendered page prints it with a dot as the thousands separator, so 1.870.000 € is one million eight hundred and seventy thousand euros, not a decimal.
  • surface (floor area) - a decimal carrying the unit code MTK, beside nombre de pièces (room count) and type de bien (property type). Cards add nombre de chambres (bedroom count).
  • DPE and GES (energy and greenhouse gas labels) - drawn as a list of the letters A to G with only an active state marking the real class, so plain text extraction returns all seven letters. The tooltip carries the numeric band behind the letter, for example 251 to 330 kWh per m2 a year.
  • charges (service charges) and taxe foncière (property tax) - usually typed into the free-text description rather than a field. One listing we read states charges de copropriété of 472 euros per quarter inside the body text.
  • étage (floor level) - not a structured field. It turns up in the title or description where the owner mentions it, and on the search side only as a dernier étage (top floor) filter.
  • Address - street, locality, postal code and country in the structured block, plus coordinates.
  • Reference and date - each page prints a PAP reference code, the publication date and a price per m2 the site computes itself.
  • Photos, and nearby transport as station names with the metro or RER line held in an icon class, not text.

Personal contact details are not part of the output. PAP publishes a private owner's telephone number on the listing page, and every advertiser is a private individual, which makes that number personal data under the GDPR. Our standard build drops the phone number and any personal name before delivery. That is the default, not something you ask for.

What a PAP listing carries
What PAP scraping has to handle over time

What PAP scraping has to handle over time

A listing lives at /annonces/{slug}-r{id}. The slug is cosmetic and not unique: we found two different Paris flats published under the same appartement-75016-jardin-de-45m2 slug with different r ids. The r number is the stable key, and requesting the path with the slug left out redirects to the current canonical URL, so an id kept from an earlier run can be re-resolved later.

Search paths look like /annonce/{slug}-{place}-{code}-g{id}, and one g namespace covers every level: Île-de-France is g471, the Paris departement is g439, Paris 16e is g37783. Communes carry g ids too, and PAP's per-commune price pages reuse them, which turns the join between a listing index and its local reference price into a lookup rather than a match on place names.

Pagination is a trailing path segment rather than a query parameter, and the slug prefix rotates between pages. On one archived Paris lettings run, page 12 sat under recherche-location, page 13 under locations-particuliers, page 14 under location--logement and page 15 under logement-louer, all sharing the same g439 tail. A crawler that increments a page number against a fixed slug drifts off the result set, so ours follows the rendered links.

Withdrawn listings do not stay addressable. A removed advert returns 404 rather than a sold or let marker, so time on market, price cuts and disappearance dates are reconstructed by re-checking ids already held and stamping first-seen and last-seen dates on each one.

What PAP is and why it sits apart

PAP is short for De Particulier à Particulier. Every advert on pap.fr is placed by the owner of the property. The owner pays PAP to publish it, and no agency mandate sits behind the listing. Nothing on the site is syndicated in from professional stock.

The rule is visible in the markup, not only in the marketing. Each listing page carries a schema.org Product block, and the seller inside its offers object is typed as a Person with the name Particulier. The report form on a listing offers a category called Professionnel de l'immobilier (property professional), so a reader can flag an advert they believe came from a business. Owners restate it in their own words: a Paris 16e sale listing we read closes its description with the line Agence ou mandataires interdits (agencies or agents forbidden), and the contact panel adds the note Le propriétaire refuse le démarchage commercial (the owner refuses commercial canvassing).

The site splits into vente immobilière (sales), location immobilière (long-term lettings) and location vacances (holiday lets), and it also publishes a price-per-square-metre page for every French commune. Because French law requires the energy label in a property advertisement, DPE and GES letters sit on residential listings as a matter of course.

Get a Quote
dev_w
25

Developers

customers
500+

Customers worldwide

pages
1 500 000 000+

Pages extracted

stime
15000+

Hours saved for our clients

Plans

Airplane

€199 / one-time

setup fee - included

Data limits100,000
Frequencyone-time
Run timeup to 5 days
Data storing7 days

Helicopter

€169 / mo

setup fee €499

Data limits250,000
Frequencymonthly
Run timeup to 5 days
Data storing14 days

Glasses

€229 / mo

setup fee €499

Data limits1,000,000
Frequencyweekly
Run timeup to 5 days
Data storing30 days

DNA

€549 / mo

setup fee €799

Data limits3,000,000
Frequency3 times daily
Run timesame day
Data storing90 days

Why PAP needs its own feed

Portals carrying agency mandates describe what the professional market is doing. PAP describes what owners do when they price a property themselves, and the two do not move together.

Because the inventory is private by construction, a PAP extract answers questions a mixed portal cannot. How large the private share of supply is in a given commune. Where a private asking price sits against the price-per-square-metre reference PAP publishes for that same commune. How the energy mix of privately marketed homes compares with mandated stock, which carries weight now that letting a class G home has been barred since 1 January 2025, with class F following on 1 January 2028 and class E on 1 January 2034. How long a private seller holds an asking price before cutting it.

The lettings side works the same way. Private landlords set rents with nobody in between, so PAP price movement reads fairly directly as what owners think a unit is worth, and the student-season cycle shows up plainly in the location immobilière section. Coverage also reaches communes where agency presence is thin and private sale is the normal route.

Related Case Studies

230,000 Daily Rows Standardized Across 5 EU Property Sites

230,000 Daily Rows Standardized Across 5 EU Property Sites

Monitoring of real estate listings on funda.nl, pararius.com, rentberry.com, rentola.com, and zimmo.be to support the growth of a European property portal.

Learn More about 230,000 Daily Rows Standardized Across 5 EU Property Sites
85K Rows of Houses/Day Into CRM via API - Set up in 7 Days

85K Rows of Houses/Day Into CRM via API - Set up in 7 Days

Daily detection of new private property listings in Switzerland on Homegate.ch and ImmoScout24.ch, giving the agency first access to high-value leads.

Learn More about 85K Rows of Houses/Day Into CRM via API - Set up in 7 Days
226K Listings + 3.4m Images from Immobilienscout24

226K Listings + 3.4m Images from Immobilienscout24

Scraping residential listings from Immobilienscout24.de in Germany and Mallorca, including complete data and resized images.

Learn More about 226K Listings + 3.4m Images from Immobilienscout24
Our Blog

Reads Our Latest News & Blog

Learn how to use web scraping to solve data problems for your organization

Scraping Property Portals by Region: Best Real Estate Platforms That Actually Matter

Scraping Property Portals by Region: Best Real Estate Platforms That Actually Matter

Real estate teams work in a fragmented data landscape. The sites that drive demand in Boston look nothing like the ones that matter in Berlin, São Paulo, Dubai, or Mumbai.

7 Real Estate Websites to Scrape in 2026: Plus 2 Hidden Gems

7 Real Estate Websites to Scrape in 2026: Plus 2 Hidden Gems

Real estate teams are operating in a data environment that is bigger, faster, and more fragmented than ever. Listings go live and disappear in hours, price cuts happen quietly, and the portals that matter most in each country are rarely the same global “top 5.”

How to Use Real Estate Web Scraping to Gain Valuable Insights

How to Use Real Estate Web Scraping to Gain Valuable Insights

August 27, 1180

Real estate web scraping: a powerful tool for data collection and analysis. Learn how to choose the right data collection method and benefit from real estate web scraping

scrapeit logo

About ScrapeIt

ScrapeIt is a managed web scraping agency. We are not selling a library or a self-serve tool. We scope the job with you, build the crawler, run it on a schedule, watch it when the site changes, and deliver a file or an API that loads straight into a warehouse or a model.

Ask for a sample before committing. A small extract from the PAP scope you have in mind tells you more than any specification sheet.

FAQ

Does PAP have a public API?

No. PAP publishes no public API and no developer programme for its listings, and there is no documented endpoint that serves them. Feeds to partners are arranged privately or brokered through aggregators. Everything we deliver is parsed from the pages the site publishes, including the schema.org block each listing already carries.

Can you include the seller's phone number and contact details?

No. PAP shows a private owner's telephone number on the listing and attaches a note that the owner refuses commercial canvassing. Every advertiser on the site is a private individual, so those details are personal data, and we exclude them from the output by default. If the purpose of the project is to contact private sellers directly, we are not the right supplier.

Can I just use a simple HTTP request to get PAP data?

Not for the listing pages. On 28 August 2026 we requested robots.txt from pap.fr with an ordinary desktop browser user agent and it returned normally, while the sales index, a Paris index and a search path each returned HTTP 403 behind a Cloudflare interstitial asking for JavaScript and cookies. robots.txt itself names more than a hundred specific clients it disallows, python-requests and HTTrack among them, and blocks every URL carrying a query string as well as /pagination/ and /proximite/. We work inside those rules rather than around them.

Can you scrape only one commune or departement instead of all of France?

Yes. Every place on PAP has a numeric g identifier that appears in its search path, such as g439 for Paris and g37783 for Paris 16e. Regions, departements, arrondissements and communes all sit in that one namespace, so the scope can be a single town or a list of a hundred. Property type, nombre de pièces, price band and surface narrow it further.

How many PAP listings will I get, and how often can the data refresh?

Volume depends on the place and the date, and it moves daily. As a fixed point, a Paris lettings index captured on 4 August 2025 reported 1035 rentals in Paris, 112 of them in the 16th arrondissement. Sale and rental volumes also swing with the season. We measure the live count for your scope during scoping instead of quoting a figure that ages, and the refresh interval is yours to choose, from daily through to monthly.

How does it Work?

Step 1 - Make a Request

You share your needs, expectations, and desired timeframe. We’ll suggest the best solution based on your request and budget.

Step 2 - Configuring Custom Web Crawlers

Our specialists configure the crawlers and extract a sample dataset for your review before proceeding with the full-scale extraction.

Step 3 - Collect and Deliver

Once you approve the sample, we launch the project and start full data collection. We gather, filter, and structure the data for easy use, delivering it on time in your preferred format.

Step 4 - Maintain and Support

Our team manages ongoing processes, monitors website changes, and supports all data extraction cycles. We can also help integrate data into your systems or create dashboards to simplify analysis.

Request a Quote

Tell us more about you and your project information.
Which sites, which fields, how often. A couple of lines is enough.

We reply within 1 business day. No obligation.

scrapiet

Scrapeit Sp. z o.o.
10/208 Legionowa str., 15-099, Bialystok, Poland
NIP: 5423457175
REGON: 523384582