French Public Procurement — BOAMP Tender Scraper
Pricing
Pay per usage
French Public Procurement — BOAMP Tender Scraper
Search and extract French public procurement tenders from BOAMP (Bulletin Officiel des Annonces des Marches Publics). Filter by keyword, department, notice type, or date range. Returns tender details, buyer, deadline, awarded contractor, and full notice data. No cookies, no login.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
French Public Procurement Scraper — BOAMP Tenders
Search and extract French public procurement tenders from BOAMP (Bulletin Officiel des Annonces des Marches Publics). Filter by keyword, department, notice type, market type, or date range. Returns tender details, buyer, deadline, awarded contractor, and classification codes. No cookies, no login required.
How to scrape BOAMP data
This actor queries the official BOAMP open data API to deliver structured French procurement data. BOAMP is France's mandatory publication bulletin for public procurement — covering all government contracts from central ministries to local communes. The database contains over 1.67 million notices, updated twice daily.
Search by Keyword
Search in French for best results — "informatique", "construction", "nettoyage", "conseil", "fournitures". The API searches across tender titles and descriptions.
Filter by Department or Market Type
Narrow to a specific French department (75 for Paris, 13 for Marseille area) or market type (works, supplies, services). Combine with date range for precise monitoring.
Track Awards
Set notice type to "attribution" to see who won recent contracts — essential for competitive intelligence and bid/no-bid decisions.
What data does French Public Procurement Scraper extract?
| Field | Type | Description |
|---|---|---|
| title | String | Tender subject/object |
| buyer | String | Contracting authority name |
| description | String | Full tender description |
| noticeType | String | Call for tenders, award, or correction |
| marketType | String | Works, supplies, or services |
| publicationDate | String | Publication date |
| bidDeadline | String | Response deadline |
| department | String | Department code(s) |
| referenceNumber | String | BOAMP reference number |
| classificationCodes | Array | CPV classification codes |
| awardedContractor | String | Winner name (on award notices) |
| awardAmount | Number | Contract value (on award notices) |
| url | String | Direct link to BOAMP notice |
| scrapedAt | String | ISO timestamp |
Example output
{"title": "Marche de prestations informatiques","buyer": "Ville de Paris","description": "Accord-cadre pour des prestations de developpement logiciel","noticeType": "appel","marketType": "services","publicationDate": "2026-05-18","bidDeadline": "2026-06-30","department": "75","referenceNumber": "26-12345","classificationCodes": ["72000000"],"awardedContractor": "","awardAmount": null,"currency": "EUR","sourceUrl": "https://www.boamp.fr/avis/detail/26-12345","url": "https://www.boamp.fr/avis/detail/26-12345","scrapedAt": "2026-05-20T14:30:00.000Z"}
Tips for best results
- Award tracking: Filter by "attribution" notice type to monitor who wins contracts in your sector. Build a competitive intelligence database.
- Regional focus: Use department codes to focus on your region. 75 = Paris, 69 = Lyon, 13 = Marseille, 33 = Bordeaux.
- Scheduled monitoring: Run daily to catch new opportunities within hours.
How much does it cost?
| Search size | Estimated time | Estimated cost |
|---|---|---|
| 20 notices | ~3 seconds | ~$0.002 |
| 100 notices | ~10 seconds | ~$0.008 |
| 1,000 notices | ~2 minutes | ~$0.06 |
Can I use it as an API?
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("studio-amba/boamp-scraper").call(run_input={"searchQuery": "informatique","department": "75","maxResults": 50,})for tender in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{tender['title']} | {tender['buyer']} | Deadline: {tender['bidDeadline']}")
Limitations
- OpenDataSoft API caps offset pagination at 10,000 results — use date-range windowing for bulk extraction
- Some fields (donnees, gestion) contain nested JSON that varies by notice type
- Updated twice daily — may not reflect the most recent hours
Other European procurement scrapers
- Dutch Procurement (TenderNed) — Dutch public tenders
- BODACC Scraper — French insolvency and company announcements
Your feedback
Found a bug or want a feature? Open an issue on the Issues tab.