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.
| Param | Meaning |
|---|---|
lens | money · land · property · rules · meetings · entity |
q | keywords (up to 4) |
agency | agency name as printed in the record |
min | minimum award $ (money lens → award feed) |
kind + name | entity 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.
| Param | Meaning |
|---|---|
raw_string | exact text in agency_name. One row for each distinct source string |
canonical_id | stable text id assigned by the crosswalk |
canonical_name | name this site uses for the group |
variants | every 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).