Bosnia Public Procurement Contracts Scraper
Pricing
from $10.00 / 1,000 contracts
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
Maintained by CommunityActor 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?
| Group | Fields |
|---|---|
| Contract | contractId, contractDate, contractValue, currency, lastUpdated |
| Procedure | procedureId, procedureNumber, procedureName, procedureType, contractType, awardCriterion |
| Lot and CPV | lotId, lotName, lotEstimatedValue, cpvCode, cpvDescription |
| Authority | authorityId, authorityName, authorityTaxNumber, authorityCity, authorityType, authoritySector, authorityRegion |
| Winner | winnerName, winnerTaxNumber, winnerCity, winnerCountry, winnerIsForeign, isConsortium, winners (all members, lead first) |
| Competition | bidderCount, offersReceived, singleBidder |
How to scrape Bosnia public procurement contracts
- Click Try for free and pick a date range (default: last 30 days), plus an optional keyword such as
računar(computers) orvozila(vehicles). - Press Start. A run of a few hundred contracts takes about a minute.
- 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
onlyNewto receive only contracts added or changed since the last run.
Input
| Field | Description |
|---|---|
dateFrom / dateTo | Contract date range, YYYY-MM-DD (Bosnian local dates). Default: last 30 days |
keyword | Text in the procedure title, in the notice language (for example računar, vozila, lijekova) |
procedureTypes | Default: open, restricted and competitive-request procedures. Direct agreements are supported but off by default (they are about 85% of all records and mostly tiny) |
contractTypes | Goods, Services, Works. Empty means all |
minValue | Minimum contract value in BAM |
maxItems | Cap on records returned. You are charged per record, so this is also your spending cap |
onlyNew | Return 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 website | Raw open API | This Actor | |
|---|---|---|---|
| Winner next to each contract | Page by page | Needs 6+ joins across endpoints | One flat row |
| Bulk export | Manual | You write and maintain the code | CSV, JSON, Excel in one click |
| Filters by CPV, value, type, keyword | Limited | OData queries you build yourself | Simple input form |
| Monitoring new contracts | Manual checks | You build the sync | Schedule it with onlyNew |
| Private individuals | Shown | Present in raw data | Names 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 ApifyClientclient = 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.
Related Actors
- Moldova Public Procurement Tenders Scraper: tenders, buyers and bidders with IDNO from Moldova's official MTender platform.
- Moldova Company Financial Statements Scraper: official revenue, profit, assets and employees of Moldovan companies.
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:
contractDateis 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:
bidderCountis the number of bidders registered on the lot and is filled for nearly all records.offersReceivedcomes 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).