# Cash Grain Bids by State (`standardwork/cash-grain-bids`) Actor

Daily cash grain bids for 29 states: corn, soybeans, wheat and more by location, with basis, price range and year-ago price. Public market reports.

- **URL**: https://apify.com/standardwork/cash-grain-bids.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

$5.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

## Cash Grain Bids by State

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

Prices are USDA Market News reports of past bids, not offers to buy or sell, and not trading or financial advice. Call your elevator for a current price.

### What it does

Pulls the daily and weekly cash grain bid reports for 29 states and terminals, plus the national oilseed report, and returns one clean row per bid line: commodity, buyer type, region, location, basis range and futures month, price range, average, year-ago price, freight terms, and delivery period.

Corn, soybeans, wheat (all classes), sorghum, oats, barley, sunflower, canola, millet and flax, wherever the state report lists them.

### Quick start (no code)

1. Leave the default input to get Iowa bids, or type state codes in "States or reports" (for example OH, IL, NE).
2. Optional: type corn or soybeans in "Commodity contains", or a town or region in "Location or region contains".
3. Click Start. Results show as a table you can download as CSV, Excel or JSON.

Report codes: AR, CA, CO, IL, IN, IA, IA-MN-BARGE, KS, KY, GULF-EXPORT, MD, MN, MS, KC-WHEAT, MO, MT, NE, NC, ND, OH, OK, OR-PORTLAND, PA, SC, SD, TN, TX, VA, WY, NATIONAL-OILSEEDS. Turn on "Pull every report" for all of them (about 800 rows).

### Output fields

Every row has the same fields in the same order. Missing values are null.
report, reportId, reportTitle, reportDate, reportStatus, section, commodity, locationType, region, location, saleType, protein, basisLow, basisHigh, basisFuturesMonth, basisUnit, basisChange, priceLow, priceHigh, priceAverage, priceUnit, priceChange, yearAgoPrice, freight, delivery, note, error, qcStatus, qcNotes, sourceUrl, retrievedAt, retrievedAtLocal.

- Basis is in cents per bushel unless basisUnit says otherwise. basisFuturesMonth is the futures month code (Z December, H March, K May, N July, U September, X November, F January).
- Price is in priceUnit ($/Bu for most, $/Cwt for oilseeds, $/Ton for some Portland feed grains).
- When a report lists one value, priceLow and priceHigh are the same.

### Self-checks

Rows are never dropped. A row is flagged in qcStatus with a reason in qcNotes when a price is outside a plausible range, low is above high, the average is outside the range, the commodity heading is missing, or the report is older than your limit (default 4 days, weekly reports get 6 more). A report that cannot be fetched or read returns one row with the error filled in.

### Source limits

- Reports are published once a day on business days (weekly for CA, IN, MD and PA). Weekends and holidays show the last report.
- Some reports stop for a while. Example: the Maryland report was last dated June 24, 2026 when this tool was built, so its rows are flagged as old.
- Values are passed through as published. Location names are as written in the report.

### Data sources and credits

U.S. Department of Agriculture, Agricultural Marketing Service, Market News, public state grain report PDFs (https://www.ams.usda.gov/market-news/state-grain-reports). USDA information is public domain. Credit: U.S. Department of Agriculture.

### Disclaimer

This is an independent tool by Standard Work Co. It is not affiliated with, endorsed by, or sponsored by any government agency named here. Agency names are used only to say where the data comes from.
The data comes from public government sources and is passed through as published, only reformatted. Government data can be preliminary, late, missing, revised, or wrong, and this tool can fail too. This output is not an official government record.
Provided "as is" with no warranty of any kind, including accuracy, completeness, or timeliness. You are responsible for checking the official source before acting on anything here. Liability is limited as stated in the Apify Standard Actor Contract for this tool.

# Actor input Schema

## `reports` (type: `array`):

Report codes to pull. Codes: AR, CA, CO, IL, IN, IA, IA-MN-BARGE, KS, KY, GULF-EXPORT, MD, MN, MS, KC-WHEAT, MO, MT, NE, NC, ND, OH, OK, OR-PORTLAND, PA, SC, SD, TN, TX, VA, WY, NATIONAL-OILSEEDS. A numeric report id such as 2892 also works.

## `allReports` (type: `boolean`):

Pull all 30 reports at once (about 800 rows). Overrides the list above.

## `commodityContains` (type: `string`):

Optional. Keep only rows whose commodity contains this text, for example corn, soybeans, or wheat. Leave blank for all.

## `locationContains` (type: `string`):

Optional. Keep only rows whose location or region contains this text, for example Pennyrile. Leave blank for all.

## `maxReportAgeDays` (type: `integer`):

Rows from a report older than this are flagged in qcStatus (weekly reports get 6 extra days). 1 to 60.

## Actor input object example

```json
{
  "reports": [
    "IA"
  ],
  "allReports": false,
  "maxReportAgeDays": 4
}
```

# 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 = {
    "reports": [
        "IA"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("standardwork/cash-grain-bids").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 = { "reports": ["IA"] }

# Run the Actor and wait for it to finish
run = client.actor("standardwork/cash-grain-bids").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 '{
  "reports": [
    "IA"
  ]
}' |
apify call standardwork/cash-grain-bids --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,standardwork/cash-grain-bids"
        }
    }
}
```

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/fKGyJOG41IdjPw9OQ/builds/0cObcMJvZBlDFrpXY/openapi.json
