NYC City Record Scraper: Bids, Awards & Notices avatar

NYC City Record Scraper: Bids, Awards & Notices

Pricing

from $4.00 / 1,000 city record notices

Go to Apify Store
NYC City Record Scraper: Bids, Awards & Notices

NYC City Record Scraper: Bids, Awards & Notices

NYC City Record notices from NYC Open Data: city procurement solicitations, contract awards, intents to award, hearings and agency rules. One row per notice with agency, PIN, due date, amount, vendor and text. Filter by section, type, agency, keyword or amount, or monitor new ones. No contact data.

Pricing

from $4.00 / 1,000 city record notices

Rating

0.0

(0)

Developer

Jason Padilla

Jason Padilla

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

Categories

Share

This Actor collects notices from The City Record, the official journal of New York City: procurement solicitations, contract awards, intents to award, public hearings on contracts, agency rules and other city notices. Each notice becomes one clean record with the agency, title, procurement ID (PIN), selection method, due date, contract amount, awarded vendor and plain-text notice body. It reads the public NYC Open Data API politely, needs no login, removes contact details and charges $0.004 per notice.

By Civitab, independent public-data tools. Apify Store ID: civitab/nyc-city-record.

What you get

New York City agencies must publish their bids, awards and hearings in The City Record, and DCAS republishes every notice in the "City Record Online" open dataset (updated daily, more than one million notices since 2003). Contractors, bid-tracking services, journalists and civic researchers use it to spot new city bids early and to see who won which contract. For each notice you get:

  • section and notice type (Solicitation, Award, Intent to Award, Public Hearings, Rules, and more)
  • agency, category (Goods, Construction, Human Services, ...), selection method and special-case reason
  • PIN (procurement identification number), publication start and end dates, response due date
  • contract amount and the awarded vendor (company) name for awards
  • the notice text and "other information" as plain text, hearing date and venue
  • a link to the notice on City Record Online and any linked document

Contact data is removed. The contact name, contact phone, e-mail and fax columns, the bid-submission address (often "Attn: a person") and the vendor street address are never requested from the API. Inside the notice text, e-mail addresses and phone numbers are replaced with [removed], and so are personal names that directly follow a contact cue such as "contact" or "Attn:" (a best-effort filter). The "Changes in Personnel" and "Court Notices" sections list individuals and are not offered at all.

Input example

Open city construction bids from the last 30 days that are still accepting responses:

{
"sections": ["Procurement"],
"noticeTypes": ["Solicitation"],
"categories": ["Construction"],
"daysBack": 30,
"onlyOpen": true,
"maxItems": 200
}

Output example

One real item from a live run on 22 Oct 2026 (the dates in source and scrapedAt are in UTC):

{
"requestId": "20261014020",
"section": "Procurement",
"noticeType": "Solicitation",
"category": "Construction/Construction Services",
"agency": "Environmental Protection",
"title": "82626B0015-BWT-TI-181 Replacement of the Multi-Rake Climber Screen & Degritting System Installation",
"pin": "82626B0015",
"selectionMethod": "Competitive Sealed Bids",
"specialCaseReason": null,
"startDate": "2026-10-21T00:00:00",
"endDate": "2026-10-21T00:00:00",
"dueDate": "2026-12-02T10:00:00",
"contractAmount": null,
"vendorName": null,
"description": "This Competitive Sealed Bid ('RFx') is being released through PASSPort, New York City's online procurement portal. Responses to this RFx should be submitted via PASSPort. To access the solicitation, vendors should visit the PASSPort Public Portal at https://www.nyc.gov/site/mocs/passport/about-passport.pageand click on the 'Search Funding Opportunities in PASSPort' blue box. This will take you to the Public Portal of all procurements in the PASSPort system. To quickly locate the RFx, insert the EPIN 82626B0015 into the Keywords search field. If you need assistance submitting a response, please contact [removed]. PASSPort is the City of New York's digital procurement platform. Register an account for your business/organization to do business with the City.",
"otherInfo": "Bid opening Location - Microsoft teamsPre bid conference location -Microsoft TEAMSMandatory: noDate/Time - 2026-11-02 10:00:00",
"eventDate": null,
"eventLocation": null,
"documentUrl": null,
"noticeUrl": "https://a856-cityrecord.nyc.gov/RequestDetail/20261014020",
"datasetUrl": "https://data.cityofnewyork.us/d/dg92-zbpx",
"source": "NYC Open Data / DCAS, dataset dg92-zbpx, 2026-10-23, modified: contact fields removed, normalized",
"attribution": "Department of Citywide Administrative Services (DCAS)",
"license": "Public Domain",
"scrapedAt": "2026-10-23T03:25:55Z"
}

Fields

FieldTypeMeaning
requestIdstringCity Record request ID
section, noticeType, categorystringWhere and what kind of notice
agency, title, pinstringIssuing agency, short title, procurement ID
selectionMethod, specialCaseReasonstringHow the contract is or was procured
startDate, endDate, dueDatestringPublication window and response due date (New York local time, no zone)
contractAmountnumberAmount in US dollars, when published
vendorNamestringAwarded vendor (company)
description, otherInfostringNotice text, HTML removed, contact details removed
eventDate, eventLocationstringHearing or meeting time and venue
noticeUrl, documentUrl, datasetUrlstringLinks to the notice, document and dataset
source, attribution, license, scrapedAtstringProvenance on every item

The full typed list is in the dataset schema (Output tab).

Pricing (pay per event)

  • $0.004 per notice, so $4 per 1,000.
  • $0.02 new-match alert, charged at most once per run, only when Only new is on and the run found at least one new notice.
  • The default run (Procurement, last 7 days, 50 notices) costs about $0.20. All Procurement notices run about 300 per month, so a daily procurement monitor costs roughly $0.06 a day including the alert.
  • Set Max cost per run in Console; the Actor stops cleanly when it is reached and you are only charged for items saved to your dataset.

Schedule and alerts

Turn on Only new, pick sections, notice types, agencies or keywords, and schedule the Actor daily in Console. Each run returns only notices you have not received yet for that filter set, and the ALERT record in the key-value store says how many were found. Connect runs to e-mail, Slack or a webhook with Apify integrations. AI agents can call it through the Apify MCP server as civitab/nyc-city-record.

Input reference

InputDefaultNotes
sectionsProcurementProcurement, Public Comment on Contract Awards, Contract Award Hearings, Public Hearings and Meetings, Agency Rules, Special Materials, Property Disposition
noticeTypesallSolicitation, Award, Intent to Award, Public Hearings, Meetings, Notice, Rules
daysBack7By publication start date; 0 = no date limit
publishedFrom, publishedToemptyExact date range (end inclusive); overrides daysBack
onlyOpenfalseDue date today or later
agencies, categories, selectionMethodsnoneCase-insensitive "contains" match
keywordsnoneAny word in title, text, vendor or PIN
minAmount, maxAmountnoneContract amount in USD
maxItems50Stop after this many notices
onlyNewfalseMonitor mode with cross-run memory per filter set
requestDelaySecs11 to 10 seconds between API requests

Source and license (robots.txt / terms checked 22 Oct 2026)

  • Source statement (also in the source field of every item, with the actual retrieval date):

    NYC Open Data / DCAS, dataset dg92-zbpx,

  • Dataset: "City Record Online" on NYC Open Data, dataset ID dg92-zbpx, published by the Department of Citywide Administrative Services (DCAS), read through its public SODA JSON API. No login, no API key, no account.

  • License: the dataset page lists the license as Public Domain and the attribution as Department of Citywide Administrative Services (DCAS). NYC's Open Data Law (Administrative Code section 23-502) makes public data sets available without restrictions on their use and lets the city ask users to identify the source, the version and any modifications, which is what the source statement above does.

  • robots.txt of the portal sets Crawl-delay: 1 and disallows only browse, catalog, login and OData paths; the JSON resource API this Actor uses is not disallowed. The Actor waits at least 1 second between requests and fetches up to 1,000 rows per request.

  • Terms: the portal links the general New York City website Terms of Use, which allow use for lawful purposes and prohibit disrupting the servers; they also reserve rights in site materials, while the dataset itself is marked Public Domain. No terms forbidding automated access to the public API were found.

  • The Actor never opens City Record Online pages; it only outputs the notice link.

  • Not affiliated with or endorsed by the City of New York or DCAS.

FAQ and disclaimer

Is this every City Record notice? It covers what DCAS publishes in the open dataset, updated daily. Personnel and court notices are excluded on purpose.

Why are contact names missing? We do not output personal data. Open the notice link or the PASSPort solicitation for the official contact route.

Are times time-zone aware? Dates come as New York local time without a zone, exactly as published.

Data is provided as published by the City, without warranty; always confirm details in the official notice before bidding.

Reliability and test results (22 Oct 2026)

  • Default input (Procurement, last 7 days, 50 notices): 50 notices in 3 s, 1 request, 100% success.
  • All offered sections, last 30 days: 595 notices in 4 s, 1 of 1 request successful (100%).
  • Procurement, last 180 days: 2,820 notices in 9 s, 3 of 3 requests successful (100%).
  • Monitor test under simulated pay per event: run 1 saved 302 Procurement notices from the last 30 days and charged 302 notices plus 1 alert ($1.23); run 2 found 0 new notices and charged nothing.
  • Privacy scan of the 30-day run: 0 e-mail addresses and 0 phone numbers left in 595 items.
  • 45 offline tests (parsing, privacy stripping, name filter, filters, retries, charging, monitor memory).