TenderNed Publications Scraper
Pricing
$10.00/month + usage
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
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
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 wanneeruseOffsetPagination=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-IDpublicationDate: Publicatiedatumtitle: PublicatietiteltenderType: Type publicatiecontractType: Type contract (WERK/LEVERING/DIENST)scope: Nationaal of Europees (EU/NL)orderNature: Aard van de opdracht (OOP/RAO/COO/...)procedure: Procedurevormorganization: Informatie aanbestedende dienstcpvCodes: CPV-codes (indien beschikbaar in API-respons)closingDate: Sluitingsdatum (indien aanwezig)publicationCode: Publicatiecode (zoals EF16/EFE3, indien aanwezig)url: Link naar detailpaginaraw: Volledige API-respons
Wanneer verrijking is ingeschakeld, komen extra velden erbij:
xml: Ruwe public-xml (string)xmlJson: Geparse JSON-structuur van de XMLxmlJsonError: Foutmelding als XML-parsing faalt (andersnull)xmlStatus: HTTP-statuscode van de XML-callxmlFetchedAt: ISO-timestamp van ophalenxmlUrl: 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
aanbestedendeDienstIdoftypeAanbestedendeDienst(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,titletenderType,contractType,scope,orderNature,procedureorganization,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 whenuseOffsetPagination=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 IDpublicationDate: Publication datetitle: Publication titletenderType: Publication typecontractType: Contract type (WORK/SUPPLY/SERVICE)scope: National or European (EU/NL)orderNature: Nature of the contract (OOP/RAO/COO/...)procedure: Procedure typeorganization: Contracting authority informationcpvCodes: 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 pageraw: Full API response
When enrichment is enabled, extra fields are included:
xml: Raw public-xml (string)xmlJson: Parsed JSON structure of the XMLxmlJsonError: Error message if XML parsing fails (otherwisenull)xmlStatus: HTTP status code from the XML callxmlFetchedAt: ISO timestamp of the fetchxmlUrl: public-xml URL
When enrichment is enabled, additional fields:
enrichedAt: Enrichment timestampdetail: 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
aanbestedendeDienstIdortypeAanbestedendeDienst(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,titletenderType,contractType,scope,orderNature,procedureorganization,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
publicatiedatumorsluitingsdatum - 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.