CROL-List
The City Record, searchable

API and feeds

← Back to CROL-List

Every view on CROL-List has a machine-readable twin. No key and no account are required. Endpoints are rate-limited and cached, and none touches a paid service. Base URL: https://api.crol-list.org.

Feeds — any search as RSS / JSON / calendar

GET /feed.xml (Atom) · GET /feed.json (JSON Feed 1.1) · GET /feed.ics (subscribable calendar — one event per dated notice). Edge-cached 15 minutes.

ParamMeaning
lensmoney · land · property · rules · meetings · entity
qkeywords (up to 4)
agencyagency name as printed in the record
minminimum award $ (money lens → award feed)
kind + nameentity lens: kind=vendor|agency, name=… — vendor names are matched by normalized stem, so suffix/case variants are included
https://api.crol-list.org/feed.xml?lens=rules&agency=Buildings
https://api.crol-list.org/feed.ics?lens=meetings&q=community%20board
https://api.crol-list.org/feed.json?lens=entity&kind=vendor&name=Sinergia%20Inc

Agency-name crosswalk

GET /agencies lists each agency name as written in City Record Open Data and connects it to one name used by this site. Add ?format=csv for CSV. The endpoint needs no key, allows cross-site requests, and is cached for one day.

JSON · CSV

ParamMeaning
raw_stringexact text in agency_name. One row for each distinct source string
canonical_idstable text id assigned by the crosswalk
canonical_namename this site uses for the group
variantsevery source spelling connected to the same id

Matches use case, punctuation, known short forms, and administrative families. New spellings may start with their own id until the crosswalk is updated. The crosswalk helps connect records. It is not an official agency registry.

Batch cross-reference

POST /batch with {"names": ["…", …]} (≤10 names/request, 30 requests/day/IP). For each name, awards means award/intent notices naming that vendor (name-stem matched, all years). Mentions means full-text hits in the last two years of editions. Entity means the vendor-profile permalink when awards exist.

Permalinks

Everything on the site has a stable address you can link or cite:

/#notice/<request_id>one notice — at-a-glance summary, flags, Checkbook dollars, full text
/#vendor/<name>vendor profile (name variants resolved by stem)
/#agency/<name>agency profile
/#matter/<pin>a procurement matter as a timeline, Checkbook payments included
/#money?agency=…&q=…&m=…any filtered view — the URL is the state

Shared investigations

POST /inv stores a pin-list snapshot (structured fields only, ≤32KB, 90-day TTL, 10/day/IP) and returns an id. GET /inv/<id> reads it back. The site renders these at /#investigation/shared/<id>.

Public stats

GET /stats — the project's own usage as aggregate counts (active subscriptions, digests sent, digest links followed, feed/batch/share activity). It's cached about 15 minutes. Human-readable version: stats. Related: digest emails link notices via GET /r/<kind>/<request_id>, which checks the id against known notices, redirects to the matching permalink, and records a per-day count.

Subscribe by email

Email subscribe@crol-list.org describing what you want in plain English — for example, "construction contract awards over $500k" or "rezoning notices in Brooklyn". You'll get back a confirmation link describing how we understood your request. The watch starts only after you click it (double opt-in). Daily ceilings apply, and nothing is stored until you confirm.

MCP — for AI assistants

POST /mcp (Streamable HTTP, JSON-RPC) — point an MCP client at https://api.crol-list.org/mcp. Tools: search_notices and get_notice (the daily-refreshed notices mirror, honest-data rules applied), preview_watch (plain English → what a standing watch would deliver, without subscribing), and create_watch (plain English → a double-opt-in confirmation email — digests start only after the address confirms). Watch management stays behind the emailed unsubscribe links — knowing an address never reveals or controls its subscriptions. Per-IP and daily model-call ceilings apply.

Upstream data

CROL-List republishes and joins public datasets — for bulk work, go straight to the sources: City Record Online (dg92-zbpx, Socrata SODA) (opens in new tab) · Checkbook NYC API (opens in new tab) · Citywide Payroll (opens in new tab) · ZAP (opens in new tab).