French Public Procurement — BOAMP Tender Scraper avatar

French Public Procurement — BOAMP Tender Scraper

Pricing

Pay per usage

Go to Apify Store
French Public Procurement — BOAMP Tender Scraper

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

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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?

FieldTypeDescription
titleStringTender subject/object
buyerStringContracting authority name
descriptionStringFull tender description
noticeTypeStringCall for tenders, award, or correction
marketTypeStringWorks, supplies, or services
publicationDateStringPublication date
bidDeadlineStringResponse deadline
departmentStringDepartment code(s)
referenceNumberStringBOAMP reference number
classificationCodesArrayCPV classification codes
awardedContractorStringWinner name (on award notices)
awardAmountNumberContract value (on award notices)
urlStringDirect link to BOAMP notice
scrapedAtStringISO 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 sizeEstimated timeEstimated 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 ApifyClient
client = 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

Your feedback

Found a bug or want a feature? Open an issue on the Issues tab.