Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
openapi: 3.2.0
info:
title: crosbynews.com Pollen API
version: 1.7.0
description: 'Crosby, Texas community data: current conditions, hourly and 7-day forecast, active alerts, the EPA UV index, and a measured air-quality index (EPA/AirNow monitors, with an Open-Meteo modeled fallback) from the U.S. National Weather Service, EPA/AirNow, and Open-Meteo; river/bayou flood levels; the Atlantic tropical outlook; the Houston Health Department''s measured daily pollen and mold count; the Harris County burn-ban status from the Texas A&M Forest Service; road incidents and lane closures from Houston TranStar; recent local news headlines; and the Crosby ISD school calendar. Public, no authentication.'
contact:
url: https://crosbynews.com/
license:
name: Public domain (NWS source data)
url: https://www.weather.gov/disclaimer
servers:
- url: https://crosbynews.com
security: []
tags:
- name: Pollen
paths:
/api/pollen:
get:
operationId: getPollen
summary: Measured daily pollen and mold count for the Houston / Crosby, TX area
parameters:
- $ref: '#/components/parameters/IfNoneMatch'
responses:
'200':
description: 'The Houston Health Department''s daily count (National Allergy Bureau scale): tree/weed/grass pollen and mold spores with category + grains-per-m³, plus the species counted above zero. Publishes weekday mornings; weekends carry Friday''s count.'
content:
application/json:
schema:
$ref: '#/components/schemas/Pollen'
'304':
$ref: '#/components/responses/NotModified'
'502':
description: Pollen data unavailable
tags:
- Pollen
components:
responses:
NotModified:
description: Not Modified — the caller's If-None-Match matches the current snapshot, so no body is sent. The ETag is derived from the cache's refresh stamp, so it changes exactly when the payload would.
parameters:
IfNoneMatch:
name: If-None-Match
in: header
required: false
description: A previously returned weak ETag. When it still matches the cached snapshot, the endpoint answers 304 with no body — the cheap way to poll.
schema:
type: string
schemas:
Pollen:
type: object
properties:
location:
type: string
source:
type: string
measured:
type: boolean
description: Always true — a lab-counted air sample, not a model.
stationNote:
type: string
updated:
type:
- string
- 'null'
format: date-time
countDate:
type:
- string
- 'null'
description: Calendar date (Central) the count is for; weekends carry Friday's.
officialUrl:
type: string
format: uri
groups:
type: object
description: tree / weed / grass / mold; each null when missing from the day's report.
additionalProperties:
type:
- object
- 'null'
properties:
category:
type: string
description: 'NAB category: None, Low, Medium, Heavy, or Extremely Heavy.'
count:
type: integer
description: Grains (spores) per cubic meter of air.
species:
type: object
description: Per-group list of types counted above zero, as the lab names them.
additionalProperties:
type: array
items:
type: object
properties:
name:
type: string
count:
type: integer