Discover/opensfhistory.org API
live

opensfhistory.org APIwww.opensfhistory.org

Access geolocated historical San Francisco photographs from OpenSFHistory. Retrieve coordinates, dates, photographer credits, and collection metadata via 3 endpoints.

Endpoints
3
Updated
3h ago
Try it
Page number for pagination.
Number of results per page. Must be between 1 and 200.
Maximum latitude for bounding box filter (e.g. 37.80).
Maximum longitude for bounding box filter (e.g. -122.40).
Minimum latitude for bounding box filter (e.g. 37.75).
Minimum longitude for bounding box filter (e.g. -122.45).
api.parse.bot/scraper/a27c5d27-17a2-455c-aaf2-cce506f24093/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Use it in your codegrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/a27c5d27-17a2-455c-aaf2-cce506f24093/get_mapped_images' \
  -H 'X-API-Key: $PARSE_API_KEY'
All endpoints · 3 totalclick to expand

Get paginated list of all mapped historical images with their geographic coordinates. Optionally filter by a geographic bounding box. Returns image IDs, coordinates, and URLs for each image.

Input
ParamTypeDescription
pageintegerPage number for pagination.
limitintegerNumber of results per page. Must be between 1 and 200.
max_latnumberMaximum latitude for bounding box filter (e.g. 37.80).
max_lngnumberMaximum longitude for bounding box filter (e.g. -122.40).
min_latnumberMinimum latitude for bounding box filter (e.g. 37.75).
min_lngnumberMinimum longitude for bounding box filter (e.g. -122.45).
Response
{
  "type": "object",
  "fields": {
    "page": "integer",
    "limit": "integer",
    "total": "integer",
    "images": "array of image objects with image_id, latitude, longitude, image_url, display_url",
    "total_pages": "integer"
  },
  "sample": {
    "page": 1,
    "limit": 5,
    "total": 717,
    "images": [
      {
        "image_id": "wnp25.6699.jpg",
        "latitude": 37.750027,
        "image_url": "https://www.opensfhistory.org/Image/wnp25.6699.jpg",
        "longitude": -122.427414,
        "display_url": "https://www.opensfhistory.org/Display/wnp25.6699.jpg"
      }
    ],
    "total_pages": 144
  }
}

About the opensfhistory.org API

The OpenSFHistory API provides access to the OpenSFHistory map collection through 3 endpoints, returning geolocated historical photographs of San Francisco with coordinates, dates, photographer names, and collection metadata. The get_mapped_images endpoint supports bounding-box filtering so you can retrieve images scoped to a specific neighborhood or block, while get_image_details returns the full metadata record for any individual photograph.

What the API covers

All three endpoints draw from the OpenSFHistory mapped image collection — photographs that have been assigned geographic coordinates on the OpenSFHistory interactive map. Each image record carries a stable image_id (e.g. wnp32.3610.jpg), a latitude and longitude, an image_url for the full-resolution file, and a display_url for the preview version.

Browsing and filtering images

get_mapped_images returns a paginated list of all mapped images. You can page through results using the page and limit parameters (up to 200 per page) and narrow the result set to a geographic area using the four bounding-box parameters: min_lat, max_lat, min_lng, and max_lng. The response includes a total count and total_pages so you can drive your own pagination loop. Image IDs returned here feed directly into the other two endpoints.

Image metadata and location lookup

get_image_details accepts an image_id and returns the full metadata record: title, date, description, photographer, collection, and both image URL variants. get_images_at_location takes a precise latitude/longitude string and returns all images tagged to that exact coordinate, each with its title and image_id. Coordinates must match marker values from get_mapped_images — the matching is exact, not proximity-based.

Coverage notes

The dataset reflects OpenSFHistory's curated collection of San Francisco photographs. Only images that have been geographically mapped appear in results — unmapped items in the broader collection are not accessible through these endpoints. Date coverage spans the photographic history of the city, but the date field is a string and may contain ranges or approximate values as recorded in the original metadata.

Common use cases
  • Build a neighborhood history map layer by querying get_mapped_images with a bounding box for a specific SF district
  • Populate a timeline view of a city block by fetching image_id values and resolving date fields from get_image_details
  • Attribute photographer credits in a historical photo exhibit by reading the photographer field from get_image_details
  • Cluster historical photos around a transit corridor using the latitude and longitude fields from get_mapped_images
  • Show all photos taken at a single corner or intersection using get_images_at_location with exact coordinates
  • Cross-reference collection metadata to identify which archive contributed a given photograph
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000250 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 OpenSFHistory have an official developer API?+
OpenSFHistory does not publish an official developer API. The site's map interface is designed for public browsing rather than programmatic access.
How does bounding-box filtering work in `get_mapped_images`?+
get_mapped_images accepts four optional parameters — min_lat, max_lat, min_lng, and max_lng — that define a geographic rectangle. Only images whose coordinates fall within that box are returned. Omitting all four parameters returns the full paginated dataset.
Does `get_images_at_location` do proximity or radius-based matching?+
No. It performs exact string matching against the coordinate values stored in the marker dataset. Coordinates must match precisely as they appear in get_mapped_images results — for example, 37.327641 rather than a rounded value like 37.33. Passing an approximate coordinate will return zero results.
Can I search for images by photographer name, date range, or keyword?+
Not currently. The API supports filtering only by geographic bounding box (via get_mapped_images) or by exact coordinate (via get_images_at_location). Text-based fields like photographer, date, and description are returned in responses but cannot be used as query filters. You can fork this API on Parse and revise it to add a search endpoint that filters on those fields.
Are images outside San Francisco included in the collection?+
The OpenSFHistory collection focuses on San Francisco. The coordinate data in the dataset is clustered within SF boundaries. Images mapped to locations outside the city proper are not a documented part of the collection, so results from adjacent cities or regions should not be expected.
Page content last updated . Spec covers 3 endpoints from www.opensfhistory.org.
Related APIs in Maps GeoSee all →
portofrotterdam.com API
Track live vessel movements and monitor port performance metrics including container throughput and anchorage statistics for the Port of Rotterdam. Access nautical notices and search detailed port information to stay updated on shipping operations and port conditions.
geonames.org API
Search for places worldwide and get their exact coordinates, timezone information, and elevation data, or reverse lookup locations by coordinates to discover nearby areas. Access postal codes, country details, and geographic names across the globe to build location-aware applications and services.
spotangels.com API
Find real-time parking availability, pricing, and deals across supported cities by searching locations or addresses, with options to filter by parking type (hourly, monthly, free, or garages). Get detailed information about specific parking spots including rates and locations to make informed parking decisions on the go.
citymapper.com API
Get real-time transit information including live stop arrivals, service status, and line details across major cities worldwide. Search for nearby transit options and stay informed with service alerts to plan your commute efficiently.
bagviewer.kadaster.nl API
Search for Dutch addresses with autocomplete, look up building and residential unit details, and access historical records from the National Address and Building Registry. Find properties by coordinates, retrieve comprehensive building information, and explore how addresses and structures have changed over time.
data.lime.bike API
Access real-time availability data for Lime bikes and scooters, including station locations, vehicle status, system alerts, and geofencing zones across multiple cities. Monitor micromobility inventory and service information to find nearby vehicles or plan your trips effectively.
sentinel-hub.com API
Access satellite imagery from around the world and retrieve spectral band data, timestamps, and geographic coverage information to analyze Earth observation data. Process and generate statistics from satellite images for your specific areas of interest using powerful image processing tools.
bart.gov API
Track live BART train departures and arrival estimates across all Bay Area stations in real-time. Find your nearest station and see exactly when the next train is arriving on every platform.