Bosnia Public Procurement Contracts Scraper avatar

Bosnia Public Procurement Contracts Scraper

Pricing

from $10.00 / 1,000 contracts

Go to Apify Store
Bosnia Public Procurement Contracts Scraper

Bosnia Public Procurement Contracts Scraper

Awarded public contracts from Bosnia and Herzegovina's official e-Nabavke (javne nabavke) open API as flat records: authority, winning supplier, value, CPV code and number of bidders. Filters, fresh data, scheduled monitoring.

Pricing

from $10.00 / 1,000 contracts

Rating

0.0

(0)

Developer

Treasury Thoughts

Treasury Thoughts

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 days ago

Last modified

Categories

Share

Get Bosnia and Herzegovina public procurement data (e-Nabavke, javne nabavke) as clean, flat records: who bought, who won, how much, what was bought (CPV code) and how many bidders competed. The data comes straight from the official e-Procurement open API of the Public Procurement Agency of Bosnia and Herzegovina and is as fresh as the portal itself: new contracts appear within minutes.

The raw API is spread over 127 endpoints and needs six or more joins to connect a contract to its winner. This Actor does the joins for you and returns one ready-to-use row per awarded contract.

What does Bosnia Public Procurement Contracts Scraper do?

It reads awarded contracts from the e-Nabavke open data API, adds the contracting authority, the winning supplier (or all consortium members), the lot, the main CPV code and the number of bidders, and saves one record per contract. You can filter by date, keyword, procedure type, contract type and value, and you can run it on a schedule to receive only new or updated contracts.

What data can you extract?

GroupFields
ContractcontractId, contractDate, contractValue, currency, lastUpdated
ProcedureprocedureId, procedureNumber, procedureName, procedureType, contractType, awardCriterion
Lot and CPVlotId, lotName, lotEstimatedValue, cpvCode, cpvDescription
AuthorityauthorityId, authorityName, authorityTaxNumber, authorityCity, authorityType, authoritySector, authorityRegion
WinnerwinnerName, winnerTaxNumber, winnerCity, winnerCountry, winnerIsForeign, isConsortium, winners (all members, lead first)
CompetitionbidderCount, offersReceived, singleBidder

How to scrape Bosnia public procurement contracts

  1. Click Try for free and pick a date range (default: last 30 days), plus an optional keyword such as računar (computers) or vozila (vehicles).
  2. Press Start. A run of a few hundred contracts takes about a minute.
  3. Open the Output tab and download the results as JSON, CSV or Excel, or read them through the API.

What can you use Bosnia procurement data for?

  • Sell to the public sector: see which authorities buy your product category (CPV code), at what prices and from whom.
  • Competitor and market analysis: track who wins contracts by region, authority, category or value.
  • Due diligence and KYB: check a supplier's public-contract history.
  • Risk and transparency research: filter single-bidder awards (singleBidder) and consortia.
  • Monitoring: schedule the Actor with onlyNew to receive only contracts added or changed since the last run.

Input

FieldDescription
dateFrom / dateToContract date range, YYYY-MM-DD (Bosnian local dates). Default: last 30 days
keywordText in the procedure title, in the notice language (for example računar, vozila, lijekova)
procedureTypesDefault: open, restricted and competitive-request procedures. Direct agreements are supported but off by default (they are about 85% of all records and mostly tiny)
contractTypesGoods, Services, Works. Empty means all
minValueMinimum contract value in BAM
maxItemsCap on records returned. You are charged per record, so this is also your spending cap
onlyNewReturn only contracts added or updated since your last run. The first run uses the date range

Example input:

{
"dateFrom": "2026-09-01",
"dateTo": "2026-09-30",
"keyword": "vozila",
"contractTypes": ["Services"],
"minValue": 5000,
"maxItems": 500
}

Output example

One record per contract (abridged):

{
"contractDate": "2026-10-09",
"procedureName": "Nabavka i sukcesivna isporuka lijekova",
"procedureType": "OpenProcedure",
"lotName": "Paracetamol, propafenon, ipratropij bromid +...",
"authorityName": "JAVNA USTANOVA \"DOM ZDRAVLJA\" ZENICA",
"winnerName": "LICENTIS D.O.O. SARAJEVO",
"winnerCountry": "Bosnia and Herzegovina",
"isConsortium": false,
"contractValue": 1794.6,
"currency": "BAM",
"bidderCount": 1,
"singleBidder": true,
"cpvCode": "33690000-3"
}

Why use this Actor instead of the portal or the raw API?

e-Nabavke websiteRaw open APIThis Actor
Winner next to each contractPage by pageNeeds 6+ joins across endpointsOne flat row
Bulk exportManualYou write and maintain the codeCSV, JSON, Excel in one click
Filters by CPV, value, type, keywordLimitedOData queries you build yourselfSimple input form
Monitoring new contractsManual checksYou build the syncSchedule it with onlyNew
Private individualsShownPresent in raw dataNames withheld

How much does it cost to scrape Bosnia procurement data?

You pay per contract record saved to the dataset; the current price is shown on the Pricing tab. Set maxItems to cap what a run can cost. You are not charged for records you do not receive, and a small test run of 20 records costs only a few cents.

Integrations and API access

Run it from the Apify API, schedule it, or connect the results to Google Sheets, Make, Zapier or n8n through the Apify integrations.

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("<ACTOR_ID>").call(run_input={"keyword": "računar", "maxItems": 100})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["contractDate"], item["winnerName"], item["contractValue"])

FAQ

How fresh is the data?

New procedures appear in the source within minutes. Schedule the Actor with onlyNew for near-real-time monitoring.

Where does the data come from?

From the open data API of the e-Nabavke system (open.ejn.gov.ba), run by the Public Procurement Agency of Bosnia and Herzegovina.

Why are direct agreements off by default?

They are the vast majority of records and mostly very small. Add DirectAgreement to procedureTypes if you need them.

Can I search by winner name?

The source API does not support it, so filter the dataset after the run. Use keyword, dates, type and value to narrow the run itself.

Is the data complete?

The open dataset covers part of the data the Agency is obliged to publish, so this is not a complete register of every procurement in the country.

Something looks wrong or a field is missing?

Open an issue on the Actor page and describe the case.

Data notes

  • Source: Public Procurement Agency of Bosnia and Herzegovina, e-Procurement open data (open.ejn.gov.ba). This Actor is independent and is not affiliated with or endorsed by the Agency.
  • No warranty: data is provided as is and is not an official record. Verify anything important against the source before relying on it. You are responsible for using the data in line with the law that applies to you.
  • Respectful access: requests are throttled to about two per second.
  • Dates: contractDate is the calendar date in Bosnia and Herzegovina (Europe/Sarajevo).
  • Currency: values are in Bosnian convertible marks (BAM). The API itself does not state the currency.
  • Bidders: bidderCount is the number of bidders registered on the lot and is filled for nearly all records. offersReceived comes from the award notice and is empty when the notice has not been published yet.
  • Privacy: names and identifiers of private individuals are never output; such winners appear as "Natural person (name withheld)".
  • Language: titles and names are in the language of the original notices (Bosnian, Croatian, Serbian in Latin or Cyrillic).