Zoom APIzoom.earth ↗
Access Zoom Earth weather forecasts, satellite imagery timestamps, tropical storm tracks, active fire data, and weather model parameters via a structured API.
What is the Zoom API?
The Zoom Earth API exposes 8 endpoints covering live environmental data including weather forecasts, satellite imagery metadata, tropical storm tracking, and active fire listings. The get_active_storms endpoint returns full track histories, uncertainty cones, wind speed, and pressure readings for every currently active cyclone. Alongside that, get_weather_forecast delivers 5-day daily or hourly forecast data keyed to any lat/lon coordinate pair.
curl -X POST 'https://api.parse.bot/scraper/5894c1c2-3268-4321-88e7-0ff2549295ac/search_places' \
-H 'X-API-Key: $PARSE_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"query": "Tokyo"
}'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 zoom-earth-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: Zoom Earth SDK — search places, get forecasts, track storms, monitor fires."""
from parse_apis.zoom_earth_weather_and_environmental_data_api import (
ZoomEarth, ForecastType, SatelliteType, WeatherModelName, StormNotFound
)
client = ZoomEarth()
# Search for a location by name — results include coordinates for geocoded places.
for place in client.places.search(query="Tokyo", limit=3):
print(place.title, place.lat, place.lon)
# Get a weather forecast for Tokyo coordinates.
forecast = client.forecasts.get(latitude=35.68, longitude=139.76, forecast_type=ForecastType.DAILY)
print(forecast.metadata.latitude, forecast.metadata.longitude, forecast.metadata.time_zone)
# Get the first fire from the active fires list and inspect its details.
fire = client.fires.list(limit=1).first()
if fire:
print(fire.name, fire.admin, fire.coordinate, fire.type)
# Fetch a specific storm by ID — handle the case where it no longer exists.
try:
storm = client.storms.get(storm_id="d01l-2026")
print(storm.title, storm.place, storm.active)
for point in storm.track:
print(point.date, point.coordinates, point.wind)
except StormNotFound as exc:
print(f"Storm not found: {exc.storm_id}")
# Get satellite imagery metadata for geocolor.
sat = client.satellitedatas.get(satellite_type=SatelliteType.GEOCOLOR)
print(sat.type)
# Get weather model data availability.
model = client.weathermodels.get(model=WeatherModelName.ICON)
print(model.model, model.parameters)
print("exercised: places.search / forecasts.get / fires.list / storms.get / satellitedatas.get / weathermodels.get")
Full-text search over places, storms, and fires on Zoom Earth. Returns matching locations with coordinates, zoom levels, and navigation paths. Results include geocoded places (with lat/lon/zoom) and named entities (with opaque keys). The first result for a well-known place typically includes coordinates directly.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search query (place name, storm name, or fire name) |
{
"type": "object",
"fields": {
"query": "string — the search query submitted",
"total": "integer — number of results returned",
"results": "array of search result objects with title, lat, lon, zoom, path, marker fields"
},
"sample": {
"data": {
"query": "Tokyo",
"total": 1,
"results": [
{
"lat": 35.682839,
"lon": 139.759455,
"path": "/places/japan/tokyo/",
"zoom": 7,
"title": "Tokyo, Japan",
"marker": true
}
]
},
"status": "success"
}
}About the Zoom API
Weather Forecasts and Location Search
The get_weather_forecast endpoint accepts latitude and longitude inputs and returns either a daily object (5-day summaries with date, condition, and temperature) or an hourly object with fine-grained time-series data, depending on the forecast_type parameter. Response metadata includes the resolved timeZone for the queried coordinates. To find coordinates for a named location first, search_places accepts a free-text query — a city name, storm name, or fire name — and returns results with lat, lon, zoom, and path fields.
Satellite Imagery and Weather Model Data
get_satellite_times reports available imagery timestamps across five sources: GOES-West, GOES-East, MTG, MSG, and Himawari. For geocolor data, the response includes per-satellite total_images, earliest_timestamp, and latest_timestamp. Other satellite_type values such as radar, icon, gfs, and gibs return a data object with raw metadata. The get_weather_model_data endpoint covers the ICON and GFS models and returns per-parameter timestamp ranges (earliest, latest, total_timestamps) plus a parameters array listing available fields such as precipitation, wind speed, wind gusts, temperature, humidity, dew point, and pressure.
Tropical Storms and Active Fires
get_active_storms returns every currently active tropical storm and cyclone, including full track arrays (each point carries date, coordinates, wind speed, and pressure), cone polygon coordinates for the uncertainty envelope, and a disturbances array for developing systems. During quiet seasons the storms and disturbances arrays return empty. Individual storm detail is available via get_storm_details using a storm ID from the active_storm_ids array. get_active_fires covers wildfires and prescribed burns worldwide, returning each fire's coordinate, admin region, countryCode, type, and date, with top-level counts split between wildfires and prescribed_burns.
Platform Status
get_platform_status exposes the current server Unix timestamp, an outages object that includes a radar status field, and a notifications array. This is useful for detecting data gaps before querying imagery or forecast endpoints.
The Zoom API is a managed, monitored endpoint for zoom.earth — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when zoom.earth 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 zoom.earth 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.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Display a 5-day weather forecast widget for any coordinates using the
dailyresponse fromget_weather_forecast. - Plot active tropical storm tracks and uncertainty cones on a map using
coneandtrackarrays fromget_storm_details. - Build a wildfire monitoring dashboard using fire coordinates, country codes, and type breakdowns from
get_active_fires. - Check satellite image availability windows before rendering a timelapse by querying
get_satellite_timesfor a specific satellite source. - Resolve a city name to lat/lon for downstream forecast queries using the
latandlonfields returned bysearch_places. - Monitor ICON or GFS model update cadence by inspecting
earliestandlatesttimestamp ranges per parameter fromget_weather_model_data. - Suppress data requests during known outages by checking the
outagesandradarstatus fields fromget_platform_status.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 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.
Does Zoom Earth offer an official developer API?+
What does get_active_storms return when there are no active storms?+
storms, disturbances, and active_storm_ids fields all return empty arrays and total is 0. The endpoint still returns a valid response — callers should check total before processing.Does get_weather_forecast return historical weather data?+
Can I filter active fires by country or region?+
get_active_fires endpoint returns all active fires worldwide in a single response; each fire object includes countryCode and admin fields that you can filter client-side. There is no server-side filtering parameter currently. You can fork the API on Parse and revise it to add country or bounding-box filter inputs.What satellite sources does get_satellite_times cover, and does it return actual image tiles?+
geocolor type it returns timestamp metadata for GOES-West, GOES-East, MTG, MSG, and Himawari — each with total_images, earliest_timestamp, and latest_timestamp. It does not return image tile URLs or binary image data. The API covers metadata only; you can fork it on Parse and revise to add tile URL construction if needed.