Ca APIarts.ca.gov ↗
Access California Arts Council grant programs, grantee award records, news, and site search via 6 structured endpoints. Filter by year, county, and keyword.
What is the Ca API?
The arts.ca.gov API provides structured access to California Arts Council data across 6 endpoints, covering grant programs, past grantee awards, press releases, and site-wide search. The search_grantee_database endpoint alone returns up to 500 records per page with fields including organization name, county, award amount, grant year, and grant program — making it practical for analyzing arts funding distribution across California.
curl -X GET 'https://api.parse.bot/scraper/6e827c20-e0b6-4459-a02f-26e1d0c3a165/list_grant_programs?page=1&year=grants-for-2025' \ -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 arts-ca-gov-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.
"""California Arts Council SDK — discover grants, research grantees, browse news."""
from parse_apis.california_arts_council_api import (
CaliforniaArtsCouncil,
ResourceNotFound,
)
client = CaliforniaArtsCouncil()
# List grant programs and drill into one for full details.
program = client.grantprograms.list(limit=1).first()
if program:
detail = program.details()
print(f"Program: {detail.title}")
print(f"Sections: {list(detail.sections.keys())[:3]}")
# Search the grantee database for dance organizations.
for grantee in client.granteesummaries.search(query="dance", limit=3):
print(f"{grantee.organization_name} — {grantee.award_amount} ({grantee.grant_year})")
# Get full grantee detail from a search result.
summary = client.granteesummaries.search(query="theater", limit=1).first()
if summary:
full = summary.details()
print(f"Org: {full.organization}, County: {full.county}, Award: {full.award_amount}")
# Search site content for eligibility info.
for result in client.searchresults.search(query="eligibility", limit=3):
print(f"{result.title}: {result.url}")
# Browse latest news articles.
for article in client.newsarticles.list(limit=3):
print(f"[{article.date}] {article.title}")
# Handle a not-found slug gracefully.
try:
client.grantees.get(slug="nonexistent-organization-xyz")
except ResourceNotFound as exc:
print(f"Not found: {exc.slug}")
print("Exercised: grantprograms.list / details / granteesummaries.search / grantees.get / searchresults.search / newsarticles.list")
List all available grant programs from the California Arts Council. Supports pagination and optional year filtering. Returns program titles, slugs, URLs, and brief descriptions. Each program slug can be passed to get_grant_program_detail for full information.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination. |
| year | string | Filter by grant program year category. Values correspond to site categories (e.g., 'grants-for-2024', 'grants-for-2025', 'grants-for-2026'). |
{
"type": "object",
"fields": {
"items": "array of grant program objects with title, url, slug, and description",
"pagination": "object with page, per_page, total_rows, total_rows_unfiltered, total_pages"
},
"sample": {
"data": {
"items": [
{
"url": "https://arts.ca.gov/grant_program/impact-projects/",
"slug": "impact-projects",
"title": "Impact Projects",
"description": "Supporting collaborative projects that center artists and artistic practice in responding to issues experienced by California’s historically and systemically under-resourced communities."
}
],
"pagination": {
"page": 1,
"per_page": 10,
"total_rows": 11,
"total_pages": 2,
"total_rows_unfiltered": 11
}
},
"status": "success"
}
}About the Ca API
Grant Programs
The list_grant_programs endpoint returns paginated program listings with title, url, slug, and description fields. An optional year parameter filters results to a specific funding cycle (e.g., '2024'). To retrieve full program content — including narrative sections and application or guidelines links — pass the program slug to get_grant_program_detail, which returns a sections object mapping section headers to their text and an application_links array with link text and URLs.
Grantee Database
search_grantee_database queries historical grant award records. You can filter by year (fiscal year format, e.g., '2022-23') and query keyword (e.g., 'dance', 'theater'). Each result includes organization_name, organization_slug, county, grant_program, grant_year, and award_amount. Pagination supports up to 500 results per page. For deeper detail on a specific award — phone, address, region, and full project description — pass the organization_slug to get_grantee_detail.
News and Site Search
list_news returns press releases and news articles ordered by date descending, with title, url, slug, and date per item. search_site accepts a required query parameter and returns matched content from across the full California Arts Council website, with title, url, and snippet per result. Both endpoints support page-based pagination with total_rows, total_pages, and per_page in the pagination object.
The Ca API is a managed, monitored endpoint for arts.ca.gov — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when arts.ca.gov 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 arts.ca.gov 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?+
- Map arts funding distribution by California county using
countyandaward_amountfields from the grantee database - Track which organizations received grants in a specific fiscal year by filtering
search_grantee_databasewith theyearparameter - Build a grant discovery tool by combining
list_grant_programswithget_grant_program_detailto surface application links and eligibility criteria - Monitor California Arts Council announcements by polling
list_newsfor new press releases ordered by date - Identify grant programs relevant to a discipline (e.g., 'music', 'dance') using keyword search in
search_siteorsearch_grantee_database - Aggregate total award amounts by grant program across multiple fiscal years from grantee award records
- Retrieve organization contact details and addresses for past grantees using
get_grantee_detailslugs
| 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 California Arts Council provide an official developer API?+
What does `get_grantee_detail` return beyond what `search_grantee_database` includes?+
phone, address, region, and a full project description for the specific award. The search endpoint returns a broader set of records but omits contact and narrative fields. Use the organization_slug from search results to retrieve the detail record.Does the API expose individual news article body content, not just headlines and dates?+
list_news returns title, url, slug, and date per article, but full article body text is not included in the response. You can fork this API on Parse and revise it to add an endpoint that fetches full article content by slug.Can I filter grantees by California region rather than county?+
search_grantee_database endpoint supports filtering by year and keyword query, but not directly by region. The region field is available in get_grantee_detail responses. You can fork this API on Parse and revise it to add region-level filtering to the search endpoint.How many grantee records can I retrieve at once, and how fresh is the data?+
search_grantee_database returns up to 500 results per page with standard pagination fields (total_rows, total_pages, per_page). Data reflects what is published on the California Arts Council's public grantee database, so freshness depends on when the Council updates its records — typically aligned with fiscal year grant cycles.