Old Farmer's Almanac — Frost Dates & Growing Season by ZIP
Old Farmer's Almanac Frost Dates Scraper
Scrape last spring frost date, first fall frost date, and growing-season length for any US ZIP code from The Old Farmer's Almanac. Covers ~41,500 US ZIP codes using NOAA 1991–2020 climate normals — the same data garden apps, planting calendars, and ag-scheduling tools pull from.
Old Farmer's Almanac Frost Dates Scraper Features
- Extracts frost dates and growing-season length for any US ZIP code in one run
- Returns last spring frost date, first fall frost date, and frost-free days between them
- Includes the NOAA climate station name and elevation for every record
- Handles warm-climate ZIP codes (e.g., Southern California) gracefully — returns null for frost dates rather than erroring out
- Covers the full ~41,500-ZIP US universe via a bundled dataset derived from GeoNames postal data
- Runs in two modes: supply your own ZIP list or scrape the whole country
- Runs in seconds and costs almost nothing
Who Uses Frost Date Data?
- Garden app developers — build planting calendars and frost-alert features without maintaining NOAA station lookups yourself
- Seed companies and nurseries — calculate last-frost-safe shipping windows by customer ZIP code
- Agricultural software teams — integrate frost-free season length into crop modeling and field scheduling pipelines
- Research and academia — compile regional frost exposure datasets for phenology or climate impact studies
- Weather and climate journalists — cross-reference growing season lengths with temperature anomaly data, because the table does the work you don't want to do manually
How Old Farmer's Almanac Frost Dates Scraper Works
- You supply a list of ZIP codes — or leave it empty to scrape all ~41,500 US ZIP codes using the bundled list
- The scraper fetches each frost-date calculator page (
almanac.com/gardening/frostdates/zipcode/{zip}) using a realistic browser fingerprint - It returns the NOAA station name, frost dates and growing-season length
- Each ZIP yields one clean record. Invalid ZIP codes (no matching NOAA station) are skipped silently
Input
{
"zipcodes": ["10001", "60601", "98101"],
"maxItems": 100
}
| Field | Type | Default | Description |
|---|---|---|---|
zipcodes |
array | ["10001", "90210", "60601"] |
List of US ZIP codes to scrape. Leave empty to scrape all ~41,500 US ZIP codes |
maxItems |
integer | 10 |
Maximum number of records to return. Useful for testing. Set to 0 or omit for unlimited |
Full-country run example:
{
"zipcodes": [],
"maxItems": 0
}
Old Farmer's Almanac Frost Dates Scraper Output Fields
{
"zipcode": "10001",
"city": "New York",
"state": "NY",
"weather_station": "NEW YORK CNTRL PK TWR",
"station_elevation_ft": 131,
"last_spring_frost": "Apr 3",
"first_fall_frost": "Nov 14",
"growing_season_days": 224,
"source": "Old Farmer's Almanac frost-date calculator",
"url": "https://www.almanac.com/gardening/frostdates/zipcode/10001"
}
| Field | Type | Description |
|---|---|---|
zipcode |
string | US ZIP code |
city |
string | City name for this ZIP code |
state |
string | Two-letter US state abbreviation |
weather_station |
string | NOAA climate station name used for this ZIP's frost date calculation |
station_elevation_ft |
integer | Elevation of the nearest NOAA climate station in feet |
last_spring_frost |
string | Average last spring frost date at 30% probability (e.g., "Apr 3"). null if no frost risk |
first_fall_frost |
string | Average first fall frost date at 30% probability (e.g., "Nov 14"). null if no frost or infrequent |
growing_season_days |
integer | Number of frost-free days between last spring and first fall frost. null for frost-free climates |
source |
string | Always "Old Farmer's Almanac frost-date calculator" |
url |
string | Source URL for this record |
Frost dates use a 30% probability threshold from NOAA 1991–2020 climate normals — meaning there's roughly a 3-in-10 chance of frost occurring before or after the given date.
🔍 FAQ
How do I scrape frost dates for the whole US?
Leave zipcodes empty and set maxItems to 0. The Old Farmer's Almanac Frost Dates Scraper has a bundled list of ~41,500 US ZIP codes from the GeoNames postal dataset. It processes all of them in a single run.
What does a null frost date mean?
It means the Almanac's NOAA station data shows no meaningful frost risk for that ZIP — typical for warm-climate areas like coastal Southern California or Hawaii. The record is still returned with the station name and elevation.
How much does a full US scrape cost?
At standard PPE pricing (~$0.001/record), scraping all ~41,500 ZIP codes costs roughly $0.04–0.05 total. It's about as cheap as scraping gets for a bounded finite dataset.
What probability threshold do the frost dates use?
Thirty percent. That's the Almanac's standard — there's a 30% chance of frost on or before the last spring date and on or after the first fall date. Some gardeners want the more conservative 10% or 50% thresholds; those aren't exposed by the Almanac's ZIP-code calculator.
Need More Features?
Need different probability tiers, Canadian postal codes, or bulk-refresh scheduling? File an issue or reach out.
Why Use Old Farmer's Almanac Frost Dates Scraper?
- Zero competition — Apify's store has no other scraper that resolves ZIP → last/first frost + growing-season days as a clean table
- Ready-to-use output — structured JSON with consistent field names, no NOAA station lookup tables to manage yourself
- Bounded and predictable — ~41,500 records, finite cost, one run to capture the full US dataset