Public tenders in the kommune and county, newest first
public_projects21 fields21 of these fields open in the demo
What this does not say
Quoted verbatim from the section’s warnings field, exactly as the API returns it. They are not translated: a translation would show something other than what your response actually contains.
- Procurement notices from the last 24 months: a project at the point where it is put out to tender, months before any work starts. Doffin carries every Norwegian notice, including the below-threshold ones TED never sees; TED carries those above the EEA threshold, and a TED notice Doffin forwarded appears once, as the Doffin notice, with ted_publication_number naming its TED copy.
- Doffin places a notice no finer than its county (NUTS3 in nuts_codes), never at a kommune or street. match_basis says why a notice is here: buyer_in_kommune when the buyer is registered in this kommune (buyer_municipality_code is the buyer's registered address in Enhetsregisteret, which is where the buyer sits, not necessarily where the work is), place_of_performance_county when the notice names this county, buyer_post_code_in_kommune for TED, placed by the buyer's post code. Notices in the kommune come first. A county-level notice may concern the far side of the county.
- notice_class reads the notice's own type: announcement (a competition), intention, planning, award, contract_change, award_cancelled or, for TED, correction. An award is a notice of its own and never replaces the announcement it follows. estimated_value is the buyer's own estimate in the currency stated, excluding VAT; a notice with no estimate leaves it empty.
Fields
7 of 21 fields are value fields — the ones that decide whether a record actually says anything. The rest are context: identifiers, codes and timestamps. Fields marked “open” return values to anonymous callers; the rest require a key.
| Field | Type | Role | Demo |
|---|---|---|---|
| source | string | null | context | open |
| publication_number | string | null | context | open |
| published_on | string | null | context | open |
| title | string | null | value | open |
| notice_type | string | null | context | open |
| notice_class | string | null | value | open |
| contract_nature | string | null | context | open |
| buyer_name | string | null | value | open |
| buyer_org_number | string | null | context | open |
| buyer_city | string | null | context | open |
| buyer_municipality_code | string | null | context | open |
| estimated_value | number | null | value | open |
| currency | string | null | context | open |
| deadline | string | null | value | open |
| place_of_performance | string | null | value | open |
| nuts_codes | array<string> | null | context | open |
| cpv_codes | array<string> | null | context | open |
| match_basis | string | null | value | open |
| notice_url | string | null | context | open |
| ted_publication_number | string | null | context | open |
| updated_at | string | null | context | open |
Fetch this section
curl -H "X-API-Key: $APPROACH_API_KEY" \ "https://api.approach.no/api/v1/addresses/285717643?include=public_projects" # paginated, one section at a time curl -H "X-API-Key: $APPROACH_API_KEY" \ "https://api.approach.no/api/v1/addresses/285717643/sections/public_projects?limit=25"
Try it now
This is a real call against the public demo, from here. What appears below is what the API returned — not a sample.