Street sweeping data and API
The data behind the map, free to use: every San Francisco curb with posted street cleaning, its next sweeps with holidays applied, and 2025 parking-ticket counts. JSON over HTTPS, no key needed for normal use.
Free
120 requests a minute per IP. Cached at the edge.
Public domain
The city's data is public domain. A link back is appreciated.
CSV too
Endpoints
GET /api/v1/citiesCities: which are live, which are next, and their endpoints.
GET /api/v1/san-francisco/curbs?lat=37.7726&lng=-122.4314The block nearest a point, both sides: posted schedule, next three sweeps with holidays applied, city record ids.
GET /api/v1/san-francisco/streetsEvery street with posted cleaning.
GET /api/v1/san-francisco/streets/valencia-stOne street, every block and side, with next sweeps.
GET /api/v1/san-francisco/tickets/20252025 parking tickets in aggregate: by violation, hour, month, weekday, neighborhood and street. No plates.
GET /api/v1/new-york/curbs?lat=40.77075&lng=-73.95985New York: the curb nearest a point and the opposite curb of its block, with ASP suspensions applied and NYC DOT sign orders.
GET /api/v1/new-york/streetsNew York: every street with posted street cleaning, by borough.
GET /api/v1/new-york/streets/manhattan-3-avenueNew York: one street, every block and side, with each curb’s line from its signs.
Example
curl "https://sweepbeep.com/api/v1/san-francisco/curbs?lat=37.7726&lng=-122.4314"
{
"block": { "id": "10175000", "street": "Page St", "limits": "Fillmore St to Steiner St" },
"nearest_side": "L",
"side_confidence": "high",
"sides": [
{
"side": "L",
"label": "South side",
"schedule": ["Every Thursday, 9 to 11 AM"],
"next": [{ "start": "2026-10-29T16:00:00.000Z", "end": "2026-10-29T18:00:00.000Z" }],
"skipped": [],
"record_ids": ["1612345"],
"sides_disagree": false
}
],
"attribution": "Schedules: SF Public Works via DataSF (public domain). ..."
}What to know
- Times are ISO 8601 in UTC; San Francisco is America/Los_Angeles.
nextskips SFMTA holidays and lists night sweeps that still run. LandRare the left and right side of the city's street centerline;labelis the compass side from the city's record. When the two disagree,sides_disagreeis true: check the sign.- Sources: SF Public Works street sweeping schedule (dataset updated May 14, 2026) and SFMTA parking citations, both on DataSF. Ticket counts are computed on DataSF's servers; we never download plates.
- The posted sign is the rule. This is information, not a guarantee; see our terms.
Need more?
Higher limits, a key, more cities, or alerts for your own users (we text the driver before the sweeper comes): tell us what you are building.