New Zealand GETS Tender Opportunities Scraper avatar

New Zealand GETS Tender Opportunities Scraper

Pricing

Pay per event

Go to Apify Store
New Zealand GETS Tender Opportunities Scraper

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

Stas Persiianenko

Maintained by Community

Actor 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.

FieldDescription
tenderIdGETS RFx/tender ID
referenceNumberBuyer reference number when listed
titleTender title
agencyBuyer agency or organization
listTypeCurrent, late, closed, completed, or detail
tenderTypeFull tender type such as Request for Proposals
tenderTypeCodeShort code such as RFP or NOI
openDatePublic open date from the detail page
closeDatePublic close date from list/detail page
statusInferred status from the source list
coverageTender coverage when shown
categoriesGETS category labels
regionsGETS region labels
exemptionReasonExemption reason when public
preQualificationsRequired pre-qualifications when public
contactPublic contact or question instructions
deliveryAddressPublic delivery instructions
overviewTender overview/summary text
attachmentsPublic links found in the tender details
detailUrlGETS tender detail page URL
sourceListUrlGETS list URL where the tender was discovered
scrapedAtISO 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.htm
  • https://www.gets.govt.nz/ExternalLateTenderList.htm
  • https://www.gets.govt.nz/ExternalClosedTenderList.htm
  • https://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

  1. Open the actor on Apify.
  2. Keep the default startUrls value or leave it empty.
  3. Set maxItems to the number of tenders you need.
  4. Keep includeDetails enabled for enriched results.
  5. Click Start.
  6. 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: 25 to validate the output.
  • Increase maxItems for full list coverage.
  • Use includeClosed: true only when you need historical lists.
  • Keep includeDetails: true if you need categories, regions, or overview text.
  • Use direct detail URLs when you need to refresh specific tenders.
  • Filter by agency, regions, or categories after 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 ApifyClient
client = 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().items
print(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.

You may also want these automation-lab actors:

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.