Prowl
74/100
prowl
Benchmarked Sep 25, 2026

Open States API v3

* [More documentation](https://docs.openstates.org/en/latest/api/v3/index.html) * [Register for an account](https://openstates.org/accounts/signup/) **We are currently working to restore experiment

mlapi platform_profile
Benchmark Your API

Score Breakdown

Parseability9/10
Documentation8/10
Token Efficiency8/10
Consistency7/10
Auth Simplicity7/10
First-Try Success7/10
Latency6/10
Error Clarity6/10

Benchmark Analysis Log

Full LLM thinking from the 4-phase benchmark pipeline.

Analyze
{
  "service_type": "platform",
  "base_url": "https://openstates.org",
  "auth_method": "api_key",
  "auth_config": {
    "header": "X-API-KEY",
    "registration_url": "https://openstates.org/accounts/signup/",
    "notes": "API key required for all v3 API requests. Free tier available with registration. Key is passed as a request header (X-API-KEY) or query parameter (?apikey=)."
  },
  "endpoints": [
    {
      "path": "/api/v3/jurisdictions",
      "method": "GET",
      "description": "List all jurisdictions (states, territories) with metadata"
    },
    {
      "path": "/api/v3/people",
      "method": "GET",
      "description": "Search and list legislators/people across jurisdictions"
    },
    {
      "path": "/api/v3/people/{id}",
      "method": "GET",
      "description": "Retrieve a specific person by Open States ID"
    },
    {
      "path": "/api/v3/bills",
      "method": "GET",
      "description": "Search and list bills across jurisdictions with filters (session, chamber, classification, etc.)"
    },
    {
      "path": "/api/v3/bills/{id}",
      "method": "GET",
      "description": "Retrieve a specific bill by Open States ID"
    },
    {
      "path": "/api/v3/committees",
      "method": "GET",
      "description": "List legislative committees"
    },
    {
      "path": "/api/v3/events",
      "method": "GET",
      "description": "List legislative events and hearings"
    },
    {
      "path": "/api/v3/search",
      "method": "GET",
      "description": "Full-text search across bills, people, and other entities"
    },
    {
      "path": "/api/v3/metrics",
      "method": "GET",
      "description": "API usage metrics and statistics"
    }
  ],
  "pricing_model": {
    "type": "freemium",
    "details": {
      "free_tier": "Available with registration; rate-limited",
      "paid_tier": "Higher rate limits available (contact for enterprise options)",
      "notes": "Open States is a non-profit project under the Plural Policy umbrella. Free access for reasonable use."
    }
  },
  "rate_limits": {
    "anonymous": "Very limited / not permitted",
    "free_registered": "Reasonable use limits (exact numbers may vary)",
    "paid": "Higher limits available",
    "notes": "Rate limits are enforced per API key. Consult docs for current thresholds."
  },
  "capabilities": [
    "Access to U.S. state and territorial legislative data",
    "Bill tracking and full-text search",
    "Legislator and committee data",
    "Legislative event and hearing data",
    "Jurisdiction metadata",
    "Open API with JSON responses",
    "Bulk data downloads available separately",
    "Non-profit, open-source project"
  ],
  "raw_analysis": "Open States is a mature, well-established non-profit platform providing structured access to U.S. state legislative data (all 50 states, D.C., and territories). It is widely used by journalists, researchers, civic tech developers, and advocacy organizations.\n\nThe v3 API is a RESTful JSON API requiring an API key for access. Registration is free at https://openstates.org/accounts/signup/. Authentication is via an X-API-KEY header or an apikey query parameter. The API exposes endpoints for jurisdictions, people (legislators), bills, committees, events, and a search endpoint. Detailed documentation is available at https://docs.openstates.org/en/latest/api/v3/index.html.\n\nThe project is open-source (GitHub) and maintains bulk data downloads in addition to the API. The platform appears to be under active development; a notice on the page mentions work to 'restore experiment[al]' functionality, suggesting recent changes or maintenance.\n\nPricing is freemium: free registered access with rate limits, and higher-tier access potentially available. As a non-profit, Open States generally supports open access but enforces rate limits to manage infrastructure costs.\n\nOverall maturity: high. Open States has been operating for many years and is a de facto standard for state legislative data in the U.S."
}
Execute

2/3 tests passed

TestEndpointStatusLatency
website_uptimeGET /200511ms
robots_txtGET /robots.txt200154ms
llms_txtGET /llms.txt40494ms
Interpret
{
  "overall": 72,
  "dimensions": {
    "token_efficiency": 8.0,
    "first_try_success": 7.0,
    "response_parseability": 9.0,
    "error_clarity": 6.0,
    "doc_quality": 8.0,
    "auth_simplicity": 7.0,
    "latency": 6.0,
    "consistency": 7.0
  },
  "pricing_normalized": {
    "model": "freemium",
    "free_tier": "Available with registration, rate-limited",
    "paid_tier": "Higher rate limits via contact",
    "notes": "Non-profit open-source project; free for reasonable use"
  },
  "issues": [
    "No llms.txt (404) — agents lack a machine-readable entry point describing capabilities",
    "robots.txt disallows /api/v1/ for general user-agents, only whitelists 'googlecivicsapi' — this discourages or blocks well-behaved agents from programmatic access",
    "Website root latency ~511ms is acceptable but not fast; the HTML page is a WordPress marketing site rather than an agent-facing surface",
    "No explicit mention of bulk data download endpoints or API base URL in the provided preview — agent must discover them",
    "Auth flow for API key not described in the check results; registration required which adds an extra step",
    "Missing head security headers on robots response (minor, but notable for a data project)",
    "No status page or uptime indicators observed in checks"
  ],
  "recommendations": [
    "Publish an llms.txt and/or OpenAPI spec at a predictable URL (e.g., /llms.txt, /.well-known/openapi.json) so agents can discover endpoints without scraping",
    "Relax robots.txt to allow /api/v1/ for compliant crawlers while keeping rate limits; blanket Disallow for * harms agent adoption",
    "Provide clear API key issuance flow with self-serve registration and documented rate limits per tier",
    "Document bulk data download endpoints and formats (JSON/CSV) in getting-started guide for agent consumption",
    "Add a status/uptime page and expose health endpoints to improve reliability perception",
    "Ensure full security headers across all endpoints (HSTS, CSP, etc.) to build trust for integration",
    "Reduce root page latency and/or offer a lightweight machine-readable landing page for agents"
  ]
}

Agent Readiness

x402 Payments
Not supported
Streaming
No
Sandbox
None
Agent Auth
Unknown
SDKs
None listed
MCP Support
No

Embed your Prowl badge

Show your live agent-readiness score on your own site. Free, no auth — it updates as your score changes.

Prowl agent-readiness badge
<a href="https://prowl.world/service/open-states-api-v3">
  <img src="https://prowl.world/badge/open-states-api-v3.svg" height="56" alt="Agent-readiness on Prowl">
</a>

Options: ?style=light|dark · ?size=sm|md · ?variant=certified (claimed + DNS-verified only) · badge generator with preview

Want the full interactive view?

See operational metrics, LLM evaluations, agent readiness, and more.

Open in Dashboard