Romanian Public Contracts Scraper (e-licitatie.ro / SEAP) avatar

Romanian Public Contracts Scraper (e-licitatie.ro / SEAP)

Pricing

from $10.00 / 1,000 company looked ups

Go to Apify Store
Romanian Public Contracts Scraper (e-licitatie.ro / SEAP)

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

Oaida Adrian

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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

  1. Build a filter: free-text keyword (Romanian), CPV code/prefix, publication date range (YYYY-MM-DD), contracting authority (partial name), and mode.
  2. 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).
  3. With fetchDetails on (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 via C_PUBLIC_CANotice + GetCANoticeContracts.
  4. Results are pushed to the default dataset as JSON.

Input

FieldTypeDescription
keywordstringFree text in the contract title/object (e.g. infrastructura, drumuri, medicamente). Empty = latest notices.
cpvCodestringCPV code or prefix (e.g. 45233140-2 or 45233100).
dateFrom / dateTostringPublication date range, YYYY-MM-DD.
authoritystringContracting authority partial name (e.g. Primaria, Consiliul Local).
modestringtenders (participation notices, default), awarded (contract awards with winners), or both.
fetchDetailsboolEnrich each notice with description, authority contact and winners. Default true.
maxItemsintMax 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:

FieldDescription
contractIdInternal notice/contract ID (cNoticeId / caNoticeId).
noticeNoPublic notice number (e.g. CN1047952, SCNA1135873).
titleContract title (Romanian).
descriptionShort description of the object (when fetchDetails).
authorityContracting authority name (with CUI/fiscal prefix).
authorityCuiAuthority fiscal number (CUI).
cpvCodeCPV code + name (e.g. 45233140-2 - Lucrari de drumuri).
acquisitionTypeFurnizare / Servicii / Lucrari.
procedureTypeLicitatie deschisa, Procedura simplificata, etc.
estimatedValueRonEstimated value in RON (tenders).
contractValueRonAwarded value in RON (awarded contracts).
publicationDateNotice publication timestamp.
deadlineTender receipt deadline (tenders).
awardDateAward date (awarded contracts).
statusProcedure/notice state (Publicat, Atribuita, Anulata...).
winner / winnerCuiWinning supplier name + fiscal number (awarded contracts).
sourceUrlLink to the notice on e-licitatie.ro.
scrapedAtExtraction 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.0 when 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.