Romanian Public Contracts Scraper (e-licitatie.ro / SEAP)
Pricing
from $10.00 / 1,000 company looked ups
Romanian Public Contracts Scraper (e-licitatie.ro / SEAP)
Scrape Romanian public procurement from e-licitatie.ro (SEAP/ANAP): tender notices and awarded contracts. Filter by keyword, CPV code, date range and contracting authority. Includes contract values in RON, deadlines and winners.
Pricing
from $10.00 / 1,000 company looked ups
Rating
0.0
(0)
Developer
Oaida Adrian
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Scrape Romanian public procurement — tenders and awarded contracts — from e-licitatie.ro, the official national platform run by ANAP (Agenția Națională pentru Achiziții Publice), the successor to SEAP. Filter by keyword, CPV code, publication date and contracting authority. Get contract values in RON, deadlines, statuses and winners for awarded contracts.
All data comes from the platform's own public JSON API — no login, no cookies, no browser required.
Why scrape Romanian public procurement?
Romania publishes every public tender and every awarded contract on e-licitatie.ro. That is a massive, structured stream of business intelligence:
- Sales intelligence — find authorities buying exactly what you sell, with deadlines and budget ceilings, weeks before the award.
- Competitive analysis — see who wins contracts in your niche, at what price (winner + awarded value in RON for every published award).
- Market research — track CPV categories over time, estimate market size, watch infrastructure, IT, health, agriculture spending.
- Journalism & research — monitor public money flows, detect award patterns, build datasets for analysis.
The native-language advantage: titles and descriptions are in Romanian, and the CPV classification matches EU-wide coding, so you can join with EU TED data.
How it works
- Build a filter: free-text keyword (Romanian), CPV code/prefix, publication date range (YYYY-MM-DD), contracting authority (partial name), and mode.
- The actor queries the public search API
(
POST /api-pub/NoticeCommon/GetCNoticeListFiltered/for tenders,POST /api-pub/NoticeCommon/GetCANoticeList/for awarded contracts) with the same headers the web app sends (Referer + Origin + X-Requested-With — the API rejects hotlink requests without them). - With
fetchDetailson (default), each result is enriched from the notice view endpoints: full description, authority contact details, CPV name, and — for awarded contracts — the winner and awarded value viaC_PUBLIC_CANotice+GetCANoticeContracts. - Results are pushed to the default dataset as JSON.
Input
| Field | Type | Description |
|---|---|---|
keyword | string | Free text in the contract title/object (e.g. infrastructura, drumuri, medicamente). Empty = latest notices. |
cpvCode | string | CPV code or prefix (e.g. 45233140-2 or 45233100). |
dateFrom / dateTo | string | Publication date range, YYYY-MM-DD. |
authority | string | Contracting authority partial name (e.g. Primaria, Consiliul Local). |
mode | string | tenders (participation notices, default), awarded (contract awards with winners), or both. |
fetchDetails | bool | Enrich each notice with description, authority contact and winners. Default true. |
maxItems | int | Max results to return (default 50, max 500). |
Example input:
{"keyword": "drumuri","cpvCode": "45233140-2","dateFrom": "2026-01-01","mode": "both","maxItems": 100}
Output
One dataset item per notice. Key fields:
| Field | Description |
|---|---|
contractId | Internal notice/contract ID (cNoticeId / caNoticeId). |
noticeNo | Public notice number (e.g. CN1047952, SCNA1135873). |
title | Contract title (Romanian). |
description | Short description of the object (when fetchDetails). |
authority | Contracting authority name (with CUI/fiscal prefix). |
authorityCui | Authority fiscal number (CUI). |
cpvCode | CPV code + name (e.g. 45233140-2 - Lucrari de drumuri). |
acquisitionType | Furnizare / Servicii / Lucrari. |
procedureType | Licitatie deschisa, Procedura simplificata, etc. |
estimatedValueRon | Estimated value in RON (tenders). |
contractValueRon | Awarded value in RON (awarded contracts). |
publicationDate | Notice publication timestamp. |
deadline | Tender receipt deadline (tenders). |
awardDate | Award date (awarded contracts). |
status | Procedure/notice state (Publicat, Atribuita, Anulata...). |
winner / winnerCui | Winning supplier name + fiscal number (awarded contracts). |
sourceUrl | Link to the notice on e-licitatie.ro. |
scrapedAt | Extraction timestamp (UTC). |
Use cases
- Bid pipeline: keyword + CPV + dateFrom for this month → a fresh list of relevant tenders with deadlines every morning.
- Award monitoring:
mode: awarded+ your CPV → track winners and prices for competitive intelligence. - Research: pull 500 notices per run into a dataset for analysis.
Pricing
Pay per event — you only pay for what you extract:
- apify-actor-start — one-time charge per run.
- result — per notice returned (default primary event).
No monthly fee, no hidden costs.
Limitations
- The platform caps a single unauthenticated search at ~3,000 results
(
searchTooLong); for wider windows, narrow by date range or CPV. - Titles/descriptions are as published by authorities — Romanian diacritics vary (some notices use ASCII transliteration).
- Awarded-value fields are
0.0when the authority did not publish a value. - The API is a live government service; occasional 5xx retries are handled automatically with backoff.
- Hard API failures are loud, not silent: if e-licitatie.ro answers 403 (the anti-hotlink "Referrer cannot be null"), 400, or an empty/invalid response, the run FAILS with a clear error instead of exiting successfully with zero items. A zero-item run therefore means a genuinely empty search, never a swallowed error.