Seb’s List API
A read API over verified, first-party rental listings in New York City, available over REST at https://api.sebslist.com/v1 and as a remote MCP server at https://api.sebslist.com/mcp. The full machine-readable spec is at /v1/openapi.json.
Authentication
Send your API key as a bearer token. Keys start with sl_live_, are shown once when issued, and can be revoked at any time. MCP clients that support OAuth can also sign in through our authorization server, advertised at /.well-known/oauth-protected-resource.
Authorization: Bearer sl_live_...
Search rentals
GET /v1/rentals/search returns currently available units from verified suppliers, newest confirmations first.
| Parameter | Type | Notes |
|---|---|---|
| market | string | Market id. Default nyc. |
| neighborhoods | comma list | e.g. East Village,Williamsburg (case-insensitive). |
| boroughs | comma list | Manhattan, Brooklyn, Queens, Bronx, Staten Island. |
| bedrooms_min / bedrooms_max | number | 0 is a studio. |
| bathrooms_min | number | |
| rent_min / rent_max | number | Gross monthly rent, USD. |
| near_lat, near_lng, radius_meters | number | Radius search. radius_meters 100–25,000, default 1,500. |
| pets | dogs | cats | any | Units that accept the given pet. |
| no_fee | boolean | Tenant pays no broker fee. |
| laundry_in_unit | boolean | |
| furnished | boolean | |
| amenities | comma list | Controlled vocabulary, e.g. doorman,elevator,dishwasher. All must match. |
| available_by | YYYY-MM-DD | Available on or before this date. |
| max_age_days | number | Only listings confirmed within this many days. Default 7, max 21. |
| sort | newest | rent_asc | rent_desc | distance | distance requires near_lat/near_lng. |
| limit | 1–50 | Default 20. |
| cursor | string | next_cursor from the previous page. |
{
"object": "list",
"data": [ { "id": "rnt_01JB8X3F6Q9W2C4M7K5T0V8N1D", "object": "rental_listing", ... } ],
"has_more": true,
"next_cursor": "eyJvIjoyMH0"
}Get a listing
GET /v1/rentals/{id} returns one listing, or 404 if it no longer exists or its supplier is no longer verified.
Contact a supplier
When your user wants to ask a question, tour, or apply, call POST /v1/rentals/{id}/contact. It returns the supplier’s direct contact details and their own listing page, and records the referral so suppliers can see the value agents bring them. Seb’s List never sits between the renter and the supplier.
{
"object": "rental_contact",
"listing_id": "rnt_01JB8X3F6Q9W2C4M7K5T0V8N1D",
"referral_id": "ref_01JB8X5K2Q7T1C9M3N6V8W0Y4Z",
"supplier": { "id": "org_...", "name": "Hudson Bridge Realty", "verified": true },
"contact": { "name": "Maria Lopez", "email": "maria@hudsonbridgerealty.com", "phone": "+12125550142", "url": null },
"supplier_url": "https://www.hudsonbridgerealty.com/rentals?ref=sebslist&sl_ref=...",
"instructions": "Contact the supplier directly to ask questions, book a tour, or apply..."
}The listing object
Fields are always present; unknown values are null rather than guessed. Key groups: rent (monthly, net effective, concessions), fees (no_fee, broker_fee with paid_by, application, amenity, move-in, deposit), layout, pets, amenities and building_amenities (controlled vocabulary), tours, supplier, contact, freshness and provenance. See the OpenAPI spec for the complete schema.
MCP server
Streamable HTTP at https://api.sebslist.com/mcp, stateless, authenticated like the REST API. Tools:
search_rentals: the same filters as REST search.get_rental: full details and provenance for one listing.get_rental_contact: supplier contact hand-off (records a referral).list_markets: covered cities.
Freshness and provenance
Every listing has freshness.last_verified_at and verified_via (intake, checkin, source_sync, feed, admin). Listings become stale after 7 days without confirmation and are taken off market after 21. provenance maps each field to supplier_reported, public_record or derived.
Errors
Errors use RFC 9457 problem details with application/problem+json, and every response carries a Request-Id header to quote to support.
HTTP/1.1 400 Bad Request
Content-Type: application/problem+json
{
"type": "https://sebslist.com/docs/errors/invalid-request",
"title": "Invalid query parameters",
"status": 400,
"request_id": "req_01JB8X...",
"errors": [ { "path": "sort", "message": "sort=distance requires near_lat/near_lng" } ]
}Rate limits
Limits are per partner, per minute, and reported on every response with RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset. Over the limit you’ll get a 429 with Retry-After. Need more? Write to us and we’ll raise it.