Cornucopia APIcornucopia.org ↗
Access Cornucopia Institute organic food scorecards, brand ratings, research documents, and news via a structured API covering dairy, eggs, beef, and more.
What is the Cornucopia API?
This API exposes 8 endpoints covering The Cornucopia Institute's organic food scorecard database, including brand ratings, tier classifications, detailed scoring rubrics, independent brand listings, research documents, and news. The get_dairy_brand_detail endpoint returns a full rubric array with per-criterion points and comments for any dairy brand slug, while search_scorecard lets you filter brands by keyword across dairy, eggs, beef, and poultry categories.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/e75e8fb5-df25-49dc-8b95-5412bd26db58/get_all_scorecards' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace cornucopia-org-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Cornucopia Institute organic food scorecards — bounded, re-runnable."""
from parse_apis.cornucopia_institute_api import (
Cornucopia, ScorecardType, BrandNotFound
)
client = Cornucopia()
# List available scorecards — each covers one product category.
for sc in client.scorecards.list(limit=5):
print(sc.title, sc.slug)
# Search dairy brands by keyword, using the ScorecardType enum.
brand = client.dairybrands.search(query="organic", type=ScorecardType.DAIRY, limit=1).first()
if brand:
print(brand.brand_name, brand.rating, brand.score)
# Drill into the brand's detailed scoring rubric (sub-resource).
detail = brand.detail.get()
print(detail.brand_name, detail.total_score)
for entry in detail.rubric[:3]:
print(entry.criteria, entry.points)
# List egg brands — highest rated first.
for egg in client.eggbrands.list(limit=3):
print(egg.brand_name, egg.market_area, egg.score)
# Typed error handling: catch a missing brand.
try:
bad = client.dairybrands.search(query="zzz_nonexistent_zzz", limit=1).first()
except BrandNotFound as exc:
print(f"Brand not found: {exc.brand_slug}")
# Latest news articles.
article = client.articles.list(limit=1).first()
if article:
print(article.title, article.url)
print("exercised: scorecards.list / dairybrands.search / detail.get / eggbrands.list / articles.list")
Returns all available organic food scorecards published by The Cornucopia Institute. Each scorecard covers a product category (dairy, eggs, beef, poultry, plant-based beverages, cottage cheese, soy). The slug identifies the scorecard and can be used to construct URLs.
No input parameters required.
{
"type": "object",
"fields": {
"items": "array of scorecard objects each with title, url, and slug"
},
"sample": {
"data": {
"items": [
{
"url": "https://www.cornucopia.org/scorecard/eggs/",
"slug": "eggs",
"title": "Organic Egg Scorecard"
},
{
"url": "https://www.cornucopia.org/scorecard/dairy/",
"slug": "dairy",
"title": "Organic Dairy Scorecard"
}
]
},
"status": "success"
}
}About the Cornucopia API
Scorecard Listings and Brand Data
The get_all_scorecards endpoint returns every available scorecard with its title, URL, and slug — covering dairy, eggs, beef, poultry, yogurt, plant-based beverages, snack bar, cottage cheese, cereal, and soy. From there, get_dairy_scorecard_brands and get_egg_scorecard_brands return full brand lists with fields including brand_name, rating, products, score, market_area, tier, and slug. The tier and score fields let you rank or filter brands without any additional processing.
Detailed Brand Rubrics
get_dairy_brand_detail accepts a brand_slug (sourced from the dairy scorecard listing) and returns a rubric array alongside total_score and meta_info. Each rubric entry includes the specific criterion, points awarded, and reviewer comments — useful for understanding exactly why a brand received its score rather than relying on the summary rating alone.
Search and Independent Brands
search_scorecard accepts a type parameter (dairy, eggs, beef, or poultry) and a required query string matched case-insensitively against brand names and products. Results share the same shape as the full scorecard listings. get_indie_brands returns a separate list of independent organic brands with company, category, and logo_url fields — a distinct dataset from the scored brands.
Research and News
get_research_documents returns Cornucopia's published reports and buyer's guides with title, url, and description. get_news_articles returns recent articles and newsletter archive entries with title, url, date, and excerpt. Both endpoints require no input parameters.
The Cornucopia API is a managed, monitored endpoint for cornucopia.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when cornucopia.org changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official cornucopia.org API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build an organic brand comparison tool using
score,tier, andratingfields from dairy or egg scorecards - Surface detailed scoring rubrics for a specific dairy brand to explain why it received a given tier classification
- Search across beef or poultry scorecards by product name to find all matching brands and their scores
- Compile a directory of independent organic brands by category using
get_indie_brandsdata - Monitor new research reports and buyer's guides published by The Cornucopia Institute via
get_research_documents - Feed organic food news and newsletter excerpts into a content aggregator using
get_news_articles - Filter dairy brands by market area field to identify regionally available organic options
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does The Cornucopia Institute offer an official developer API?+
What does `get_dairy_brand_detail` return beyond the summary scorecard listing?+
rubric array with individual scoring criteria, points awarded per criterion, and reviewer comments, plus total_score and meta_info fields. The listing endpoints only return the summary score, rating, and tier.Does `search_scorecard` work across all scorecard types simultaneously?+
type parameter is optional but targets one scorecard at a time — dairy, eggs, beef, or poultry. Cross-scorecard search in a single call is not currently supported. You can fork this API on Parse and revise it to add a multi-type search endpoint.Are detailed rubric breakdowns available for egg, beef, or poultry brands the way they are for dairy?+
get_dairy_brand_detail exposes a full rubric array. Detailed per-criterion scoring for egg, beef, and poultry brands is not covered. You can fork this API on Parse and revise it to add brand-detail endpoints for those scorecard types.