NJ Government Bid Alerts
Pricing
Pay per usage
Go to Apify Store
NJ Government Bid Alerts
Scrape open NJ government bids, RFPs, and solicitations from the New Jersey Purchasing Group. Search by keyword or county. Get bid titles, locations, published dates, closing dates, and detail URLs.
NJ Government Bid Alerts — Apify Actor
A CheerioCrawler-based Apify Actor that scrapes open solicitations (bids/RFPs) from the BidNetDirect New Jersey Purchasing Group page.
Why Cheerio?
The target page serves static HTML tables. Cheerio is ~10× faster and drastically cheaper than Playwright — no browser overhead, no JavaScript execution cost. Perfect for this use case.
Data Extracted
Each scraped bid produces a dataset item with:
| Field | Description |
|---|---|
title | Solicitation/bid title |
location | Geographic region (county, municipality, or state) |
publishedDate | Date published (MM/DD/YYYY) |
closingDate | Submission deadline (MM/DD/YYYY) |
detailUrl | Absolute URL to the bid detail page |
source | Always "BidNetDirect - New Jersey Purchasing Group" |
scrapedAt | ISO 8601 scrape timestamp |
Input
| Field | Type | Default | Description |
|---|---|---|---|
keyword | string | "" | Optional — filter bids whose title contains this text (case-insensitive) |
maxResults | integer | 50 | Maximum number of bids to return (0 = no limit) |
county | string | "" | Optional — filter bids whose location contains this text (case-insensitive) |
Output
Structured JSON dataset in the Apify dataset storage.
PPE (Pay Per Event) Charges
search-start—$0.005— charged once per run at startupbid-result—$0.002— charged per bid written to the dataset
Local Development
# Install dependenciesnpm install# Compile TypeScriptnpm run build# Validate input schemaapify validate-schema# Run locallynpm start# Run with Apify platform simulationapify run --purge
Notes
- The scraper follows pagination via the "Next" link on the page.
- Respects
maxResults— stops enqueuing new pages once the limit is reached. - Handles the "no bids" empty state gracefully.
- Retries failed requests up to 3 times.