Discover/Cityofnewyork API
live

Cityofnewyork APIpassport.cityofnewyork.us

Access NYC PASSPort public procurement solicitations. Retrieve RFx listings with agency, EPIN, status, procurement method, and release date via 2 endpoints.

Endpoint health
verified 5d ago
list_solicitations
search_solicitations
2/2 passing latest checkself-healing
Endpoints
2
Updated
21d ago

What is the Cityofnewyork API?

The NYC PASSPort Solicitations API provides access to New York City's public procurement opportunities through 2 endpoints, returning fields like EPIN, agency, procurement method, RFx status, and release date for every active solicitation. The list_solicitations endpoint retrieves all public RFx records with automatic pagination, while search_solicitations filters results by keyword across solicitation names and descriptions.

Try it
Optional keyword to filter solicitations by name or description.
Maximum number of pages to retrieve. Each page contains 15 results.
api.parse.bot/scraper/818a1929-82b5-4d75-a8cc-bdfe20bd21a1/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/818a1929-82b5-4d75-a8cc-bdfe20bd21a1/list_solicitations?max_pages=1' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace passport-cityofnewyork-us-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: NYC PASSPort solicitations — browse and search procurement opportunities."""
from parse_apis.nyc_passport_public_solicitations_api import NYCPassport, SolicitationPageError

client = NYCPassport()

# List recent solicitations (capped to 5 items)
for sol in client.solicitations.list(limit=5):
    print(sol.procurement_name, "|", sol.agency, "|", sol.rfx_status)

# Search for construction-related opportunities
result = client.solicitations.search(keyword="construction", limit=1).first()
if result:
    print(result.epin, result.procurement_name, result.industry, result.release_date)

# Typed error handling around a list call
try:
    for sol in client.solicitations.list(keyword="technology", limit=3):
        print(sol.procurement_name, sol.procurement_method, sol.main_commodity)
except SolicitationPageError as exc:
    print(f"Page error: {exc}")

print("exercised: solicitations.list / solicitations.search / SolicitationPageError catch")
All endpoints · 2 totalmissing one? ·

List all public solicitations available on NYC PASSPort. Returns paginated results from the public browse page, automatically advancing through server-side pages. Each page contains 15 results. Without a keyword filter, returns all solicitations ordered by most recent release date.

Input
ParamTypeDescription
keywordstringOptional keyword to filter solicitations by name or description.
max_pagesintegerMaximum number of pages to retrieve. Each page contains 15 results.
Response
{
  "type": "object",
  "fields": {
    "total_count": "integer - total number of solicitations available on the site",
    "solicitations": "array of solicitation objects with program, industry, epin, procurement_name, agency, rfx_status, procurement_method, release_date, due_date, remaining_time, main_commodity, and detail_id",
    "retrieved_count": "integer - number of solicitations actually retrieved"
  },
  "sample": {
    "data": {
      "total_count": 151,
      "solicitations": [
        {
          "epin": "06922P0040",
          "agency": "DEPARTMENT OF SOCIAL SERVICES",
          "program": "Supportive Housing",
          "due_date": "12/31/2099 7:00:00 PM",
          "industry": "Human/Client Service",
          "detail_id": "37097",
          "rfx_status": "Released",
          "release_date": "6/8/2026 10:00:00 AM",
          "main_commodity": "Housing Services",
          "remaining_time": "",
          "procurement_name": "06922P0040-Provision of Congregate Supportive Housing",
          "procurement_method": "Competitive Sealed Proposal"
        }
      ],
      "retrieved_count": 15
    },
    "status": "success"
  }
}

About the Cityofnewyork API

What the API Returns

Both endpoints return an array of solicitation objects drawn from NYC PASSPort, the City of New York's Procurement and Sourcing Solutions Portal. Each object includes: program, industry, epin (the unique procurement identifier), procurement_name, agency, rfx_status, procurement_method, and release_date. The response also surfaces total_count (total solicitations available on the site) and retrieved_count (how many were actually fetched in the current request).

Endpoints and Parameters

list_solicitations accepts an optional keyword string to filter by name or description, and an optional max_pages integer to cap how many pages are fetched — each page holds 15 records. This makes it straightforward to do a full sweep of all open solicitations or limit retrieval to a manageable batch.

search_solicitations takes the same keyword and max_pages parameters and additionally echoes back the keyword field in the response so you can confirm which query produced the results. Use this endpoint when you want to target a specific topic, industry, or agency name rather than pulling the full list.

Pagination and Coverage

Results are paginated at 15 solicitations per page on the source portal. Both endpoints handle pagination automatically up to the max_pages limit you specify. Omitting max_pages will retrieve all available pages. The total_count field lets you calculate how many pages exist before committing to a full retrieval.

Reliability & maintenanceVerified

The Cityofnewyork API is a managed, monitored endpoint for passport.cityofnewyork.us — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when passport.cityofnewyork.us changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official passport.cityofnewyork.us API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
5d ago
Latest check
2/2 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Monitor new RFx releases from specific NYC agencies by polling list_solicitations and filtering on the agency field.
  • Build a procurement alert system that runs search_solicitations with industry-specific keywords and flags new release_date entries.
  • Compile a dataset of NYC contracting opportunities segmented by procurement_method (RFP, RFQ, RFI) for competitive analysis.
  • Track rfx_status changes over time to identify solicitations moving from open to awarded or cancelled.
  • Populate a vendor-facing dashboard with open NYC solicitations matched to a company's registered industry categories.
  • Research NYC procurement patterns by aggregating solicitation volume per agency over time using total_count and paginated records.
  • Cross-reference epin values against contract award databases to map solicitations to their eventual outcomes.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does NYC PASSPort have an official developer API?+
NYC does publish some open data through NYC Open Data (data.cityofnewyork.us), but PASSPort itself does not offer a documented public developer API for querying solicitation data programmatically.
What does the `epin` field represent and how is it useful?+
The epin (Electronic Procurement Identification Number) is the unique identifier assigned to each procurement in the NYC PASSPort system. It can be used to look up a specific solicitation directly on the portal and to join records across datasets that reference the same procurement.
What is the difference between `list_solicitations` and `search_solicitations`?+
list_solicitations retrieves all public solicitations on the portal, with an optional keyword filter applied client-side. search_solicitations submits the keyword as a search query and returns only matching results, also surfacing the keyword field in the response to confirm which query was used. For broad sweeps use list_solicitations; for targeted lookups use search_solicitations.
Does the API return solicitation documents, attachments, or award details?+
Not currently. The API returns the solicitation metadata fields listed above — name, agency, EPIN, status, method, release date, program, and industry — but not attached documents, addenda, or contract award information. You can fork this API on Parse and revise it to add an endpoint that retrieves solicitation detail pages and associated attachments.
Are there any limitations on how much data can be retrieved in one request?+
Each page contains 15 solicitations. Setting max_pages controls the upper bound on records returned. If max_pages is omitted, the API will paginate through all available pages, which can result in a large response when total_count is high. For large datasets, setting a reasonable max_pages value and iterating incrementally is advisable.
Page content last updated . Spec covers 2 endpoints from passport.cityofnewyork.us.
Related APIs in Government PublicSee all →
biddingo.com API
Search and filter government procurement bids and RFPs across different regions and categories to find relevant opportunities. Access detailed project descriptions and bid information to help you discover and evaluate contracting opportunities that match your business needs.
projects.worldbank.org API
Search World Bank projects and procurement opportunities across all sectors and regions to find funding information and active tenders. Retrieve detailed project information, funding breakdowns, and procurement notices.
buy.nsw.gov.au API
Search and retrieve NSW Government tender opportunities and contract notices from buy.nsw, including detailed information about available opportunities, supplier hubs, and procurement categories. Filter opportunities by category and discover top procurement deals in real-time to stay informed about potential business contracts with the NSW Government.
merx.com API
Search and monitor Canadian government tenders, RFPs, and contract opportunities on Merx, with the ability to filter by category and view detailed solicitation information for both open and closed opportunities. Find procurement projects that match your business needs and track their status through comprehensive tender data.
portaldecompraspublicas.com.br API
Search and retrieve Brazilian public procurement processes from Portal de Compras Públicas. Access tender listings with filters for state, municipality, modality, date range, and status, and retrieve full process details including timelines, buyer information, and official notice data.
portalcompraspublicas.com.br API
Search and access detailed information about public tenders, bids, and procurement documents from Brazilian municipalities and states. Retrieve tender items, clarification logs, winner details, and all related documentation to monitor and analyze public purchasing activity across Brazil.
licitaja.com.br API
Search Brazilian government procurement bids by keyword and filter by specific agencies to find tender opportunities, with access to details like estimated values, bid timelines, descriptions, and itemized lots. Get AI-generated summaries and direct links to bid documents (edital) to help you quickly evaluate procurement opportunities.
offenevergaben.at API
Search and explore Austrian public procurement contracts, including details about contracting authorities, suppliers, and product categories. Track government spending by accessing comprehensive information about individual contracts, the organizations that issue them, and the vendors that supply them.