Skip to content

Para desarrolladores: consulte los datos a través de la API REST

La API de CalHeatScore API es un servicio público de entidades de ArcGIS. No se requiere clave de API, token ni cuenta: se pueden realizar consultas de inmediato.

URL base:

https://services1.arcgis.com/PCHfdHz4GlDNAhBb/arcgis/rest/services/CalHeatScore_Live_Data_for_API_Use/FeatureServer/0/query

Haga su primera solicitud

Obtenga el pronóstico a 7 días con puntajes de calor para un único código postal:

curl "https://services1.arcgis.com/PCHfdHz4GlDNAhBb/arcgis/rest/services/CalHeatScore_Live_Data_for_API_Use/FeatureServer/0/query?where=ZIP_CODE='95814'&outFields=ZIP_CODE,DATE,CHS_Day_0,CHS_Day_1,CHS_Day_2,CHS_Day_3,CHS_Day_4,CHS_Day_5,CHS_Day_6&returnGeometry=false&f=json"
import requests

BASE_URL = (
    "https://services1.arcgis.com/PCHfdHz4GlDNAhBb/arcgis/rest/services/"
    "CalHeatScore_Live_Data_for_API_Use/FeatureServer/0/query"
)

params = {
    "where": "ZIP_CODE='95814'",
    "outFields": "ZIP_CODE,DATE,CHS_Day_0,CHS_Day_1,CHS_Day_2,CHS_Day_3,CHS_Day_4,CHS_Day_5,CHS_Day_6",
    "returnGeometry": "false",
    "f": "json",
}

response = requests.get(BASE_URL, params=params)
data = response.json()

# Check for API errors (ArcGIS returns HTTP 200 even for errors)
if "error" in data:
    print(f"Error: {data['error']['message']}")
else:
    for feature in data["features"]:
        attrs = feature["attributes"]
        # Scores are strings — convert to int for comparisons
        score_today = int(attrs["CHS_Day_0"])
        print(f"ZIP {attrs['ZIP_CODE']}: score today = {score_today}")
const baseUrl =
  "https://services1.arcgis.com/PCHfdHz4GlDNAhBb/arcgis/rest/services/" +
  "CalHeatScore_Live_Data_for_API_Use/FeatureServer/0/query";

const params = new URLSearchParams({
  where: "ZIP_CODE='95814'",
  outFields: "ZIP_CODE,DATE,CHS_Day_0,CHS_Day_1,CHS_Day_2,CHS_Day_3,CHS_Day_4,CHS_Day_5,CHS_Day_6",
  returnGeometry: "false",
  f: "json",
});

fetch(`${baseUrl}?${params}`)
  .then((res) => res.json())
  .then((data) => {
    // Check for API errors (ArcGIS returns HTTP 200 even for errors)
    if (data.error) {
      console.error(`Error: ${data.error.message}`);
      return;
    }
    data.features.forEach((feature) => {
      const attrs = feature.attributes;
      // Scores are strings — convert to number for comparisons
      const scoreToday = Number(attrs.CHS_Day_0);
      console.log(`ZIP ${attrs.ZIP_CODE}: score today = ${scoreToday}`);
    });
  })
  .catch((err) => console.error("Request failed:", err));

Cosas importantes que saber

  • No se necesita autenticación. La API es abierta y con acceso de solo de lectura.
  • Los puntajes son cadenas de texto. Convierta CHS_Day_0 hasta CHS_Day_6 a números enteros antes de hacer comparaciones numéricas.
  • Máximo de 2,000 registros por solicitud. Sin embargo, esto no debería ser un problema ya que hay menos de 2,000 códigos postales en California.
  • Utilice el ajuste returnGeometry=false cuando solo necesite datos de los puntajes. Las coordinadas del polígono aumentan significativamente el tamaño de la respuesta.
  • Los datos se actualizan a diario. Los datos se actualizan dos veces al día, a las 5:00 AM y 8:00 AM, hora del Pacífico.
  • Formatos de respuestas: JSON (f=json), GeoJSON (f=geojson) o Protocol Buffers (f=pbf).

Los servicios de entidades de ArcGIS devuelven un código HTTP 200 aún para errores. Verifique siempre si existe una propiedad de error en el cuerpo de la respuesta antes de procesar los resultados.