New York State Contract Reporter Scraper avatar

New York State Contract Reporter Scraper

Pricing

Pay per event

Go to Apify Store
New York State Contract Reporter Scraper

New York State Contract Reporter Scraper

Extract NYSCR bid opportunities with CR numbers, agencies, due dates, categories, locations, and public notes for New York vendors.

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

5 days ago

Last modified

Categories

Share

Extract open procurement opportunities from the New York State Contract Reporter (NYSCR) into clean, structured Apify datasets.

Use this actor to monitor New York public-sector bid listings, proposal deadlines, agencies, categories, locations, and public notes without manually refreshing the NYSCR search page.

What does New York State Contract Reporter Scraper do?

New York State Contract Reporter Scraper turns NYSCR search result pages into structured procurement records.

It reads the public /Ads/Search results, paginates through matching opportunities, and saves one dataset item per contract reporter listing.

Each record includes the CR number, title, agency, division, issue date, due date, location, category, ad type, public note, source URL, and scrape timestamp.

The actor is HTTP based, so it is fast and lightweight compared with browser automation.

Who is it for?

🧾 Government vendors use it to discover bid opportunities that match their services.

šŸ—ļø Construction and engineering firms use it to watch categories such as environmental, architectural, surveying, and transportation.

šŸ’» IT and software vendors use it to monitor new technology-related opportunities.

šŸ“ˆ Capture managers use it to feed opportunity records into CRM, spreadsheets, and alerting workflows.

šŸ“° Bid-intelligence platforms use it to add New York State Contract Reporter coverage to tender databases.

Why use this actor?

Manual NYSCR monitoring is repetitive.

A proposal team may need to check new opportunities every day, copy titles into spreadsheets, and route due dates to sales teams.

This actor automates that first collection step and produces export-ready data.

It is especially useful when you need repeatable monitoring rather than one-off browsing.

What data can you extract?

FieldDescription
crNumberNYSCR Contract Reporter number
titleOpportunity title
agencyIssuing agency or public entity
divisionAgency division when shown
issueDatePublished/issue date shown by NYSCR
dueDateResponse due date shown by NYSCR
locationProject or service location when shown
categoryNYSCR category
adTypeAd type, such as General
notePublic note from the listing card
statusListing status used by the actor
sourceUrlNYSCR search URL for the CR number
scrapedAtISO timestamp when the row was extracted

How much does it cost to scrape NYSCR opportunities?

This actor uses pay-per-event pricing.

There is a small run-start event and a per-opportunity event.

The exact per-item tiers are shown on the Apify Store pricing panel and may be updated after cost validation.

For planning, start with a small maxItems value, review output quality, then scale to larger monitoring runs.

Quick start

  1. Open the actor on Apify.

  2. Enter one or more keywords, such as construction, software, or engineering.

  3. Choose a date filter: Today, Last 7 days, or All time.

  4. Set the maximum number of opportunities.

  5. Run the actor.

  6. Export the dataset as JSON, CSV, Excel, XML, or HTML.

Input options

Keywords

Use keywords to search titles, contract numbers, or CR numbers.

Leave keywords empty to collect open opportunities sorted by issue date.

Date range

Use Today for daily checks.

Use LastWeek for a recurring weekly monitor.

Use All when building a broader historical lead list.

Maximum opportunities

maxItems caps the number of records saved.

Use a small number for testing and a larger number for production monitoring.

Direct NYSCR search URLs

Advanced users can paste NYSCR /Ads/Search URLs into startUrls.

The actor keeps the query parameters and paginates from the provided URL.

Agency ID

If you already know a NYSCR GovernmentId, pass it in governmentId to narrow results to one agency.

Example input: weekly procurement monitor

{
"keywords": ["construction", "engineering"],
"dateFilter": "LastWeek",
"maxItems": 100,
"status": "Open",
"sort": "-DateIssued"
}
{
"keywords": ["software"],
"dateFilter": "All",
"maxItems": 50,
"status": "Open",
"sort": "-DateDue"
}

Example output

{
"crNumber": "2136420",
"title": "Dorsey Street and Lake Colby Parking Lots Stormwater Upgrades and Lake Colby Beach Site Civil and Engineering Work",
"agency": "Saranac Lake, Village of",
"division": "Community Development Department",
"issueDate": "7/3/2026",
"dueDate": "7/24/2026",
"location": "Dorsey Street Parking Lot and Lake Colby Beach Parking Lot and Site",
"category": "Environmental",
"adType": "General",
"note": "Responses are due by July 17, 2026...",
"status": "Open",
"sourceUrl": "https://www.nyscr.ny.gov/Ads/Search?Keyword=2136420",
"scrapedAt": "2026-07-06T04:23:33.999Z"
}

Common workflows

šŸ“¬ Daily bid alerting: schedule a run with dateFilter set to Today, then send the dataset to Slack, email, or a webhook.

šŸ“Š CRM enrichment: export CR numbers, agencies, titles, and due dates into Salesforce, HubSpot, Airtable, or Google Sheets.

🧠 Market intelligence: track categories and agencies over time to understand which departments are issuing relevant opportunities.

šŸ”Ž Proposal pipeline review: sort by due date and route high-fit opportunities to capture managers.

Integrations

Apify datasets can be consumed by Zapier, Make, webhooks, API clients, and Apify integrations.

Use CSV or Excel exports for analysts.

Use JSON for data pipelines.

Use webhooks to trigger notifications after each scheduled run.

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-york-state-contract-reporter-scraper').call({
keywords: ['construction'],
dateFilter: 'LastWeek',
maxItems: 100,
});
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-york-state-contract-reporter-scraper').call(run_input={
'keywords': ['software'],
'dateFilter': 'All',
'maxItems': 50,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

API usage with cURL

curl "https://api.apify.com/v2/acts/automation-lab~new-york-state-contract-reporter-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"keywords":["engineering"],"dateFilter":"LastWeek","maxItems":100}'

MCP: use from Claude and other AI tools

You can connect this actor through the Apify MCP server.

Install it in Claude Code with:

$claude mcp add apify-nyscr --url "https://mcp.apify.com/?tools=automation-lab/new-york-state-contract-reporter-scraper"

Use this JSON configuration for MCP clients that accept server config files:

{
"mcpServers": {
"apify-nyscr": {
"url": "https://mcp.apify.com/?tools=automation-lab/new-york-state-contract-reporter-scraper"
}
}
}

Use a tool URL scoped to this actor:

https://mcp.apify.com/?tools=automation-lab/new-york-state-contract-reporter-scraper

Example prompts:

  • "Find NYSCR software opportunities issued in the last week and summarize due dates."

  • "Extract construction bid listings from the New York State Contract Reporter and group them by agency."

  • "Monitor open environmental opportunities and prepare a CSV for our capture team."

Tips for better results

Use specific keywords when you need focused results.

Use multiple keywords when different teams monitor different services.

Keep maxItems high enough to cover all matches for broad searches.

Use LastWeek for recurring schedules to reduce duplicate review.

Use All when discovering opportunities for the first time.

Limitations

The actor extracts public search result cards.

NYSCR full opportunity details may require login or sign-up on the source website.

Attachment links are not available on the public listing cards and are therefore not included unless NYSCR exposes them publicly in the result page.

The source website controls result availability, dates, and text formatting.

Troubleshooting

Why did I get zero records?

Try a broader keyword, set dateFilter to All, or leave keywords empty.

Very specific CR numbers or phrases may not have open matches.

Why do some fields look blank?

NYSCR does not show every field for every listing.

The actor saves null when a public listing card omits a division, location, or note.

Can I scrape closed opportunities?

The public search form is optimized for open listings.

If you pass status as Closed or All, NYSCR may still control what is returned.

Data freshness

Each run fetches live NYSCR search pages.

scrapedAt shows when a record was collected.

Schedule the actor daily or weekly for repeat monitoring.

Legality

This actor collects publicly visible procurement listing data.

This actor collects publicly visible procurement listing data.

You are responsible for using the data in accordance with applicable laws, NYSCR terms, and your organization's compliance policies.

Do not use extracted data for spam or unauthorized contact.

Related Automation Lab actors for procurement and public-sector workflows:

Use the NYSCR scraper when your workflow specifically needs New York State Contract Reporter listings.

FAQ

Does this actor require my NYSCR login?

No. It uses the public search result pages.

Does it download bid attachments?

Not in the MVP. Public search cards do not expose downloadable attachments.

Can I schedule it?

Yes. Use Apify schedules with dateFilter set to Today or LastWeek.

Can it monitor multiple keywords?

Yes. Add multiple keywords and the actor will search each one, de-duplicate CR numbers, and stop at maxItems.

What if NYSCR changes its website?

If the public HTML structure changes, open an actor issue with a failed run URL and the input you used.

Output quality notes

The actor de-duplicates records by CR number.

Dates are preserved as shown by NYSCR.

The sourceUrl field points to a public search by CR number so users can quickly find the listing in NYSCR.

Changelog

Initial version extracts public NYSCR open opportunity search results with keyword and date filters.