New Zealand GETS Tender Opportunities Scraper
Pricing
Pay per event
New Zealand GETS Tender Opportunities Scraper
Monitor NZ government tenders from GETS with structured agencies, close dates, categories, regions, contacts, overviews, and source URLs.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 days ago
Last modified
Categories
Share
Extract public tender opportunities from New Zealand GETS (Government Electronic Tender Service) into a structured Apify dataset.
Use this actor to monitor current GETS tenders, enrich public tender detail pages, and feed procurement leads into spreadsheets, CRMs, dashboards, or bid-management workflows.
What does New Zealand GETS Tender Opportunities Scraper do?
New Zealand GETS Tender Opportunities Scraper visits public GETS tender list pages and public tender detail pages.
It collects tender IDs, titles, buyer agencies, tender types, close dates, open dates, categories, regions, overview text, contact instructions, attachment links, and source URLs.
The default run starts from the current tenders page at https://www.gets.govt.nz/ExternalIndex.htm.
You can also provide direct GETS list URLs or direct tender detail URLs.
Who is it for?
This scraper is built for procurement teams and suppliers that need repeatable New Zealand government tender monitoring.
Typical users include:
- 🧾 Bid teams tracking fresh public-sector opportunities.
- 🏢 Suppliers selling into New Zealand government agencies.
- 📊 Procurement-intelligence platforms enriching opportunity databases.
- 🤝 Consultants preparing tender alerts for clients.
- 🧪 Data teams building public contract opportunity pipelines.
Why use this scraper?
GETS is public, but manual monitoring is repetitive.
This actor turns tender pages into structured rows that can be filtered, exported, scheduled, and integrated through Apify.
It is useful when you need:
- a daily tender monitor,
- a spreadsheet of current opportunities,
- category or region analysis,
- a CRM feed for bid qualification,
- source URLs for human review,
- repeatable scraping without browser automation.
Data extracted
Each dataset item represents one tender opportunity.
| Field | Description |
|---|---|
tenderId | GETS RFx/tender ID |
referenceNumber | Buyer reference number when listed |
title | Tender title |
agency | Buyer agency or organization |
listType | Current, late, closed, completed, or detail |
tenderType | Full tender type such as Request for Proposals |
tenderTypeCode | Short code such as RFP or NOI |
openDate | Public open date from the detail page |
closeDate | Public close date from list/detail page |
status | Inferred status from the source list |
coverage | Tender coverage when shown |
categories | GETS category labels |
regions | GETS region labels |
exemptionReason | Exemption reason when public |
preQualifications | Required pre-qualifications when public |
contact | Public contact or question instructions |
deliveryAddress | Public delivery instructions |
overview | Tender overview/summary text |
attachments | Public links found in the tender details |
detailUrl | GETS tender detail page URL |
sourceListUrl | GETS list URL where the tender was discovered |
scrapedAt | ISO timestamp for extraction time |
How much does it cost to scrape New Zealand GETS tenders?
This actor uses pay-per-event pricing. A run costs $0.008 to start, plus a plan-tier price for every saved tender. The BRONZE per-tender price is $0.0024; higher Apify plans receive the configured tier discount.
At BRONZE pricing, one tender costs about $0.0104, 25 tenders cost about $0.068, and 100 tenders cost about $0.248. These examples include the start fee and assume the run saves the requested number of items.
Pricing is based on measured Apify cloud run costs and current comparable tender-scraping Actors. You can keep first runs cheap by using a low maxItems value such as 25.
Input options
The actor accepts a small input object.
startUrls
Optional GETS list or detail URLs.
Leave this empty to scrape current tender opportunities.
Examples:
https://www.gets.govt.nz/ExternalIndex.htmhttps://www.gets.govt.nz/ExternalLateTenderList.htmhttps://www.gets.govt.nz/ExternalClosedTenderList.htmhttps://www.gets.govt.nz/EECA/ExternalTenderDetails.htm?id=34118706
maxItems
Maximum number of tender records to save.
Use a small number for tests and a larger number for monitoring runs.
includeDetails
When enabled, the actor opens each public detail page and extracts categories, regions, overview text, and contact fields.
Disable this only when you need a very quick list-only run.
includeClosed
When enabled, the actor also adds late, closed, and completed GETS lists.
Use this for archive or competitive-intelligence workflows.
Example input
{"startUrls": [{ "url": "https://www.gets.govt.nz/ExternalIndex.htm" }],"maxItems": 100,"includeDetails": true,"includeClosed": false}
Example output
{"tenderId": "34118706","referenceNumber": null,"title": "Organic Feedstock Availability - Tranche 2","agency": "Energy Efficiency & Conservation Authority","listType": "current","tenderType": "Request for Proposals (RFP)","tenderTypeCode": "RFP","openDate": "Wednesday, 3 June 2026 4:30 PM (Pacific/Auckland UTC+12:00)","closeDate": "Monday, 13 July 2026 9:00 AM (Pacific/Auckland UTC+12:00)","status": "Open","categories": ["77000000 - Environmental Services"],"regions": ["Wellington"],"overview": "Public tender overview text...","detailUrl": "https://www.gets.govt.nz/EECA/ExternalTenderDetails.htm?id=34118706","scrapedAt": "2026-07-10T00:00:00.000Z"}
How to scrape current GETS tenders
- Open the actor on Apify.
- Keep the default
startUrlsvalue or leave it empty. - Set
maxItemsto the number of tenders you need. - Keep
includeDetailsenabled for enriched results. - Click Start.
- Export the dataset as JSON, CSV, Excel, XML, or RSS.
How to monitor GETS daily
Create an Apify task with your preferred input.
Schedule it to run every morning.
Export the dataset to a webhook, Google Sheets, Airtable, or your internal pipeline.
Use scrapedAt and tenderId to deduplicate records between runs.
Tips for best results
- Start with
maxItems: 25to validate the output. - Increase
maxItemsfor full list coverage. - Use
includeClosed: trueonly when you need historical lists. - Keep
includeDetails: trueif you need categories, regions, or overview text. - Use direct detail URLs when you need to refresh specific tenders.
- Filter by
agency,regions, orcategoriesafter export.
Integrations
Common integration patterns include:
- 🧾 Send current tender rows to a bid qualification spreadsheet.
- 📣 Trigger Slack or email alerts for matching agencies or regions.
- 🏢 Sync opportunities into a CRM as procurement leads.
- 📊 Load daily runs into a warehouse for tender trend analysis.
- 🔎 Combine GETS data with company enrichment or contact research actors.
API usage with Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/new-zealand-gets-tender-opportunities-scraper').call({startUrls: [{ url: 'https://www.gets.govt.nz/ExternalIndex.htm' }],maxItems: 100,includeDetails: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
API usage with Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('automation-lab/new-zealand-gets-tender-opportunities-scraper').call(run_input={'startUrls': [{'url': 'https://www.gets.govt.nz/ExternalIndex.htm'}],'maxItems': 100,'includeDetails': True,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
API usage with cURL
curl -X POST "https://api.apify.com/v2/acts/automation-lab~new-zealand-gets-tender-opportunities-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"startUrls": [{"url":"https://www.gets.govt.nz/ExternalIndex.htm"}],"maxItems": 100,"includeDetails": true}'
MCP usage
You can call this actor from Claude Code, Claude Desktop, Cursor, or VS Code through Apify MCP Server. The Actor-specific server URL exposes this tool only:
https://mcp.apify.com?tools=automation-lab/new-zealand-gets-tender-opportunities-scraper
Claude Code setup
Register the remote HTTP server from a terminal:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/new-zealand-gets-tender-opportunities-scraper"
Run claude mcp list to confirm that the apify server is connected.
Claude Desktop setup
Add this server to the mcpServers object in your Claude Desktop configuration, then restart Claude Desktop:
{"mcpServers": {"apify-gets-tenders": {"type": "http","url": "https://mcp.apify.com?tools=automation-lab/new-zealand-gets-tender-opportunities-scraper"}}}
Cursor setup
Create or update .cursor/mcp.json in your project (or use the equivalent global Cursor MCP settings):
{"mcpServers": {"apify-gets-tenders": {"type": "http","url": "https://mcp.apify.com?tools=automation-lab/new-zealand-gets-tender-opportunities-scraper"}}}
VS Code setup
Add the remote server to .vscode/mcp.json, then start it from VS Code's MCP servers view:
{"servers": {"apify-gets-tenders": {"type": "http","url": "https://mcp.apify.com?tools=automation-lab/new-zealand-gets-tender-opportunities-scraper"}}}
Authenticate with Apify when your client prompts you. The MCP client can then start the Actor and inspect its dataset without copying an API token into the prompt.
Example prompts:
- "Run the New Zealand GETS tender scraper and summarize tenders closing this week."
- "Find GETS opportunities from Auckland Transport and return the source URLs."
- "Export current New Zealand government tenders and group them by region."
Legality and responsible use
This actor extracts public GETS tender pages that are available without login.
It does not submit bids, register supplier interest, bypass authentication, or access private supplier-only pages.
Always review the target website terms and use the data responsibly.
FAQ
Why did I get fewer results than maxItems?
The available list pages may contain fewer tenders than your requested limit, or you may have supplied a direct detail URL.
Why are some fields null?
GETS pages do not show every field for every tender. Null values mean the field was not present publicly on that page.
Why are attachments empty?
Some tenders require supplier subscription or login for full documents. The actor only returns public links visible on the page.
Related scrapers
You may also want these automation-lab actors:
- https://apify.com/automation-lab/au-gov-tenders-scraper
- https://apify.com/automation-lab/eu-funding-tenders-scraper
- https://apify.com/automation-lab/german-tender-scraper
- https://apify.com/automation-lab/contractsfinder-uk-tenders-scraper
Changelog
See .actor/CHANGELOG.md for user-visible changes.
Support
If the GETS website changes and output looks incomplete, open an Apify issue with the run ID, input, and expected tender URL.