# Growing Degree Days and Frost Dates for Any US Location (`standardwork/growing-degree-days-frost-dates`) Actor

Degree days so far this season vs the 1991-2020 average, plus average last spring and first fall freeze dates from the nearest long-record station.

- **URL**: https://apify.com/standardwork/growing-degree-days-frost-dates.md
- **Developed by:** [Standard Work Co.](https://apify.com/standardwork) (community)
- **Categories:** Business, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$10.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Growing Degree Days and Frost Dates for Any US Location

Informational only. Not for navigation, safety, emergency, financial, medical, or legal decisions. Check the official source before you rely on it.

Enter a latitude and longitude. The tool finds the nearest weather station with daily records since 1991 and returns, in one row: growing degree days so far this season and the 1991-2020 average for the same dates, plus average last spring and first fall freeze dates (median, early 10 percent and late 90 percent), the median growing season length, and this year's last spring and first fall freeze so far.

### What you get

- Station used, its distance, state and elevation.
- Degree days this season (simple or corn 86/50 method, any base from 32 to 60 F), the 1991-2020 average for the same window, the difference and percent of average, and missing days.
- Last spring and first fall freeze dates at 24, 28, 32 or 36 F: median, early (10th percentile) and late (90th percentile), from 1991-2020.
- Median growing season length, years used, and years with no freeze.
- Self-check fields (qcStatus, qcNotes) and an error field.

### How to use (no code)

1. Enter your place and its latitude and longitude.
2. Pick the degree day base, method and season start, and the freeze threshold.
3. Click Start. It takes a few seconds. Schedule it weekly to track a season.

### Method and limits

Daily degree days are rounded to whole numbers, the same way RCC-ACIS reports them. Missing days count as zero and are flagged above 3. Freeze statistics use years with no more than 10 missing days in that half-year; years with no freeze at the chosen threshold are counted and left out of the dates. A station's frost dates can differ from a nearby garden by days, especially in valleys and cities.

### Disclaimer

Informational only. Not for navigation, safety, emergency, financial, medical, or legal decisions. Check the official source before you rely on it.
This is an independent tool by Standard Work Co. It is not affiliated with, endorsed by, or sponsored by any government agency or climate center named here. Names are used only to say where the data comes from.
The data comes from public sources and is passed through as published, only reformatted and summarized. Data can be preliminary, late, missing, revised, or wrong, and this tool can fail too.
Provided "as is" with no warranty of any kind, including accuracy, completeness, or timeliness. Liability is limited as stated in the Apify Standard Actor Contract for this tool.
Degree days and frost dates: Weather and climate data are preliminary and can change after quality control. Estimates only. Not a guarantee of crop timing or frost dates.

### Data sources and credits

Daily station data from the Applied Climate Information System (RCC-ACIS), operated by the NOAA Regional Climate Centers. Use is subject to the RCC-ACIS Terms of Use and Disclaimer.

# Actor input Schema

## `locationName` (type: `string`):

A label for your place, shown in the result. Optional.

## `latitude` (type: `number`):

Decimal degrees in the US, e.g. 39.1.

## `longitude` (type: `number`):

Decimal degrees, negative in the US, e.g. -94.58.

## `gddBaseF` (type: `integer`):

Base temperature, 32 to 60. 50 is common for corn and many crops; 40 to 45 for small grains and some pests.

## `gddMethod` (type: `string`):

simple: average of high and low minus base, negatives as 0. corn86: high capped at 86 F and low raised to the base (the usual corn method).

## `gddStartMonthDay` (type: `string`):

Date to start counting degree days each year, e.g. 04-01 or 01-01. If it is later than today, last year's season is used.

## `freezeThresholdF` (type: `string`):

Daily low at or below this counts as a freeze. 32 is a light freeze; 28 a hard freeze.

## `stationId` (type: `string`):

Use a specific station, e.g. USC00155694. Leave empty to use the nearest station with records since 1991.

## Actor input object example

```json
{
  "locationName": "Kansas City, MO",
  "latitude": 39.1,
  "longitude": -94.58,
  "gddBaseF": 50,
  "gddMethod": "simple",
  "gddStartMonthDay": "04-01",
  "freezeThresholdF": "32"
}
```

# Actor output Schema

## `results` (type: `string`):

All rows in the default dataset.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("standardwork/growing-degree-days-frost-dates").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("standardwork/growing-degree-days-frost-dates").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call standardwork/growing-degree-days-frost-dates --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,standardwork/growing-degree-days-frost-dates"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/zc9eweWhMbKb06ydP/builds/aoWzyWSyBBHkVFAio/openapi.json
