TenderNed Publications Scraper avatar
TenderNed Publications Scraper

Pricing

$10.00/month + usage

Go to Apify Store
TenderNed Publications Scraper

TenderNed Publications Scraper

Haal TenderNed aanbestedingen op via de officiële API. Inclusief filters voor CPV, data en contracttype. Biedt optionele XML-verrijking (TED) voor diepgaande info. Snel, schaalbaar en direct naar JSON/Excel. Perfect voor marktanalyse en automatische rapportages. 🚀

Pricing

$10.00/month + usage

Rating

0.0

(0)

Developer

Paco

Paco

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Share

ENGLISH BELOW

TenderNed Publicaties Scraper (Apify Actor)

Deze actor haalt Nederlandse openbare aanbestedingspublicaties van TenderNed op met behulp van de officiële TNS API met volledige filterondersteuning.

Functies

  • Volledige API-filterondersteuning: Zoeken op trefwoorden, publicatietypen, datums, CPV-codes, contracttypen, procedures en organisaties
  • Server-side filtering: Alle filters worden op API-niveau toegepast voor maximale efficiëntie
  • Optionele verrijking: haal per publicatieId de officiële TED public-xml op (/public-xml) en sla zowel de ruwe XML als een JSON-parsing daarvan op; kost ~$0.02 per verrijkte publicatie.
  • Sortering: Momenteel niet ondersteund door de TNS API; de actor stuurt geen sort parameter.
  • Schaalbaar: Beheer paginering, gelijktijdigheid en proxy-gebruik

Invoerparameters

Zoeken & Filters

  • search (string): Zoektrefwoorden in titel of beschrijving.
  • publicatieType (array): Publicatietypecodes uit de TNS API / portal, o.a. AAO (Aankondiging van een opdracht), AGO (Aankondiging gegunde opdracht), VOP (Vooraankondiging), RVO (Rectificatie van opdracht), WNO (Wijziging), MAC (Marktconsultatie), REC (Rectificatie). Meerdere waarden mogelijk.
  • publicatieDatumVanaf / publicatieDatumTot (YYYY-MM-DD): Datumbereik.
  • publicatieDatumPreset (string): Datum-preset zoals in de Swagger (bijv. AGP = afgelopen periode, exacte lijst in Swagger).
  • sluitingsDatumPreset (string): Preset voor sluitingsdatum (bv. portal-waarde VDG enz.).
  • cpvCodes (array): Meerdere CPV-codes ondersteunen herhaalde queryparam (&cpvCodes=71000000-8&cpvCodes=72000000-5).
  • typeOpdracht (array): Contracttype; codes D (diensten), L (leveringen), W (werken).
  • nationaalOfEuropees (array): Reikwijdte; EU (Europees) of NL (Nationaal).
  • aardVanDeOpdracht (array): Aard; o.a. OOP (Overheidsopdracht), RAO (Raamovereenkomst), COO (Concessie), NA (onbekend/geen waarde). Niet volledig gedocumenteerd.
  • procedure (array): Procedurecodes; o.a. OPE (Openbaar), NOP (Niet-openbaar), MAC (marktconsultatie); meer codes in Swagger.
  • aanbestedendeDienstId (string): ID van een specifieke aanbestedende dienst.
  • typeAanbestedendeDienst (array): Ongepubliceerde portalcodes (bv. cga).
  • useExperimentalFeature (boolean): Interne feature-toggle die soms in portal requests voorkomt.
  • Sortering: niet ondersteund door de huidige TNS API; de actor stuurt geen sort.

Scrapingopties

  • pageSize (1-100): Resultaten per API-pagina (standaard: 50).
  • maxItems (integer): Maximaal aantal publicaties om te scrapen (standaard: 500).
  • useOffsetPagination (boolean): Gebruik offset i.p.v. page voor paginatie (handig voor portaal-achtige calls). Standaard false.
  • offsetStart (integer): Startoffset wanneer useOffsetPagination=true (standaard 0).
  • maxPages (integer): Hard limiet op aantal pagina/offset-stappen om lange crawls te begrenzen (0 = geen limiet).
  • username / password (string): Basic Auth op TenderNed API wanneer vereist.

Verrijkingsopties

  • Optionele verrijking: haal per publicatieId de officiële TED public-xml op (/public-xml) en sla zowel de ruwe XML als een JSON-parsing daarvan op; kost ~$0.02 per verrijkte publicatie.

Geavanceerd

  • proxyConfiguration (object): Proxy-instellingen voor verrijking.

Uitvoer

Elk datasetitem bevat:

  • source: "TenderNed"
  • publicationId: Unieke publicatie-ID
  • publicationDate: Publicatiedatum
  • title: Publicatietitel
  • tenderType: Type publicatie
  • contractType: Type contract (WERK/LEVERING/DIENST)
  • scope: Nationaal of Europees (EU/NL)
  • orderNature: Aard van de opdracht (OOP/RAO/COO/...)
  • procedure: Procedurevorm
  • organization: Informatie aanbestedende dienst
  • cpvCodes: CPV-codes (indien beschikbaar in API-respons)
  • closingDate: Sluitingsdatum (indien aanwezig)
  • publicationCode: Publicatiecode (zoals EF16/EFE3, indien aanwezig)
  • url: Link naar detailpagina
  • raw: Volledige API-respons

Wanneer verrijking is ingeschakeld, komen extra velden erbij:

  • xml: Ruwe public-xml (string)
  • xmlJson: Geparse JSON-structuur van de XML
  • xmlJsonError: Foutmelding als XML-parsing faalt (anders null)
  • xmlStatus: HTTP-statuscode van de XML-call
  • xmlFetchedAt: ISO-timestamp van ophalen
  • xmlUrl: URL van de public-xml

✅ Use Cases

De TenderNed Publicaties Scraper is bedoeld voor het zoeken en exporteren van TenderNed-publicaties via de officiële TNS API met server-side filtering. Je kunt resultaten direct als dataset gebruiken in Apify of downstream verwerken in je eigen pipeline.

1) Publicaties zoeken met filters (server-side)

Vind relevante TenderNed-publicaties zonder handmatig in het portaal te zoeken.

  • Zoek op zoekterm (search)
  • Filter op publicatietype (bijv. AAO, AGO, VOP, RVO, WNO, MAC, …)
  • Filter op datumrange of datum-presets
  • Filter op CPV-codes (meerdere CPV’s via herhaalde queryparam)
  • Filter op type opdracht (D, L, W)
  • Filter op EU/Nationaal (EU, NL)
  • Filter op aard van de opdracht (bijv. OOP, RAO, COO, …)
  • Filter op procedure (codes zoals door de API geaccepteerd)
  • (Optioneel) filter op aanbestedendeDienstId of typeAanbestedendeDienst (portalcode)

2) Export voor rapportages & datasets

Gebruik de actor om een gestructureerde dataset te bouwen voor analyse of archivering.

Elke output bevat o.a.:

  • publicationId, publicationDate, title
  • tenderType, contractType, scope, orderNature, procedure
  • organization, closingDate, cpvCodes (als aanwezig)
  • url + raw (volledige API-item payload)

Handig voor: interne rapportages, marktoverzichten, periodieke exports.

3) Resultaten sorteren op datum (niet ondersteund door API)

Krijg de meest recente of juist oudste resultaten bovenaan, afhankelijk van je workflow.

  • Sorteer op publicatiedatum of sluitingsdatum
  • asc / desc

4) Bulk ophalen met paginering en limieten

Geschikt voor grotere exports met controle op omvang en kosten.

  • pageSize (1–100)
  • maxItems (stop na X publicaties)
  • maxPages (hard limiet op paginastappen)
  • Ondersteunt page-based en offset-based paginering

5) Optionele “best-effort” verrijking via detailpagina

Als enrichDetails=true bezoekt de actor (een subset van) publicatie-detailpagina’s en extraheert:

  • detail.keyValues (DL’s en tabellen → key/value)
  • detail.links (alle links op de pagina, incl. tekst)
  • detail.cpvCandidates (8-cijferige CPV-achtige codes uit body tekst)
  • nuxtState (best-effort window.NUXT dump)

Dit is handig als je naast de API-lijst ook pagina-artefacten wilt (links/labels/tekstvelden) zonder zelf selectors te beheren.

ENGLISH VERSION

TenderNed Publications Scraper (Apify Actor)

This actor retrieves Dutch public procurement publications from TenderNed using the official TNS API with full filter support.

Features

  • Full API filter support: Search by keywords, publication types, dates, CPV codes, contract types, procedures, and organizations
  • Server-side filtering: All filters are applied at API level for maximum efficiency
  • Optional enrichment: Fetch the official TED public-xml (/public-xml) and store both raw XML and a parsed JSON structure.
  • Sorting: Not supported by the current TNS API; the actor does not send sort.
  • Scalable: Handles pagination, concurrency, and proxy usage

Input Parameters

Search & Filters

  • search (string): Search keywords in title or description.
  • publicatieType (array): Publication type codes from the TNS API / portal, e.g. AAO (Contract notice), AGO (Contract award notice), VOP (Prior information notice), RVO (Correction of notice), WNO (Change), MAC (Market consultation), REC (Correction). Multiple values possible.
  • publicatieDatumVanaf / publicatieDatumTot (YYYY-MM-DD): Date range.
  • publicatieDatumPreset (string): Date preset as in Swagger (e.g. AGP = past period, exact list in Swagger).
  • sluitingsDatumPreset (string): Closing-date preset (e.g. portal value VDG, etc.).
  • cpvCodes (array): Supports multiple CPV codes via repeated query param (&cpvCodes=71000000-8&cpvCodes=72000000-5).
  • typeOpdracht (array): Contract type; codes D (services), L (supplies), W (works).
  • nationaalOfEuropees (array): Scope; EU (European) or NL (National).
  • aardVanDeOpdracht (array): Nature; e.g. OOP (Public contract), RAO (Framework agreement), COO (Concession), NA (unknown/no value). Not fully documented.
  • procedure (array): Procedure codes; e.g. OPE (Open), NOP (Restricted), MAC (market consultation); more codes in Swagger.
  • aanbestedendeDienstId (string): ID of a specific contracting authority.
  • typeAanbestedendeDienst (array): Unpublished portal codes (e.g. cga).
  • useExperimentalFeature (boolean): Internal feature toggle that sometimes appears in portal requests.
  • Sorting: not supported; no sort param is sent.

Scraping Options

  • pageSize (1-100): Results per API page (default: 50).
  • maxItems (integer): Maximum number of publications to scrape (default: 500).
  • useOffsetPagination (boolean): Use offset instead of page for pagination (useful for portal-like calls). Default false.
  • offsetStart (integer): Start offset when useOffsetPagination=true (default 0).
  • maxPages (integer): Hard limit on number of page/offset steps to cap long crawls (0 = no limit).
  • username / password (string): Basic Auth on TenderNed API when required.

Enrichment Options

  • enrichDetails (boolean): Extract additional data from detail pages (default: false).
  • maxEnrichItems (integer): Limit enrichment to control costs (default: 100).
  • maxConcurrency (integer): Concurrent browser instances (default: 5).

Advanced

  • proxyConfiguration (object): Proxy settings for enrichment.

Output

Each dataset item contains:

  • source: "TenderNed"
  • publicationId: Unique publication ID
  • publicationDate: Publication date
  • title: Publication title
  • tenderType: Publication type
  • contractType: Contract type (WORK/SUPPLY/SERVICE)
  • scope: National or European (EU/NL)
  • orderNature: Nature of the contract (OOP/RAO/COO/...)
  • procedure: Procedure type
  • organization: Contracting authority information
  • cpvCodes: CPV codes (if available in the API response)
  • closingDate: Closing date (if present)
  • publicationCode: Publication code (such as EF16/EFE3, if present)
  • url: Link to detail page
  • raw: Full API response

When enrichment is enabled, extra fields are included:

  • xml: Raw public-xml (string)
  • xmlJson: Parsed JSON structure of the XML
  • xmlJsonError: Error message if XML parsing fails (otherwise null)
  • xmlStatus: HTTP status code from the XML call
  • xmlFetchedAt: ISO timestamp of the fetch
  • xmlUrl: public-xml URL

When enrichment is enabled, additional fields:

  • enrichedAt: Enrichment timestamp
  • detail: Extracted page details (CPV codes, buyer info, documents)
  • nuxtState: Nuxt.js state data (if available)

✅ Use Cases

The TenderNed Publications Scraper is intended for searching and exporting TenderNed publications via the official TNS API with server-side filtering. You can use results directly as an Apify dataset or process them downstream in your own pipeline.

1) Search publications with filters (server-side)

Find relevant TenderNed publications without manually searching the portal.

  • Search by keyword (search)
  • Filter by publication type (e.g. AAO, AGO, VOP, RVO, WNO, MAC, …)
  • Filter by date range or date presets
  • Filter by CPV codes (multiple CPVs via repeated query param)
  • Filter by contract type (D, L, W)
  • Filter by EU/National (EU, NL)
  • Filter by nature of the contract (e.g. OOP, RAO, COO, …)
  • Filter by procedure (codes accepted by the API)
  • (Optional) filter by aanbestedendeDienstId or typeAanbestedendeDienst (portal code)

2) Export for reporting & datasets

Use the actor to build a structured dataset for analysis or archiving.

Each output includes, among other fields:

  • publicationId, publicationDate, title
  • tenderType, contractType, scope, orderNature, procedure
  • organization, closingDate, cpvCodes (if present)
  • url + raw (full API item payload)

Useful for: internal reporting, market overviews, periodic exports.

3) Sort results by date (publication or closing)

Get the newest (or oldest) results at the top depending on your workflow.

  • Sort by publicatiedatum or sluitingsdatum
  • asc / desc

4) Bulk retrieval with pagination and limits

Suitable for larger exports with control over size and cost.

  • pageSize (1–100)
  • maxItems (stop after X publications)
  • maxPages (hard cap on pagination steps)
  • Supports page-based and offset-based pagination

5) Optional “best-effort” enrichment via detail pages

If enrichDetails=true, the actor visits (a subset of) publication detail pages and extracts:

  • detail.keyValues (DLs and tables → key/value)
  • detail.links (all links on the page, including text)
  • detail.cpvCandidates (8-digit CPV-like codes from body text)
  • nuxtState (best-effort window.NUXT dump)

This is useful if, besides the API list, you also want page artifacts (links/labels/text fields) without managing selectors yourself.