Documentation

What's in the data

All states and DC are covered, with the exception of Florida. We have 2026 filings and continue to collect and update filings as they are sent to state DOIs.

Florida maintains a separate insurance filing system operated by the Florida Office of Insurance Regulation. FilingScout does not currently cover that system, so Florida filings are not included in our database.

Filings submitted to state DOIs or updated should be reflected in our data within a few days. We are slowly adding prior years of filing data and provide updates to our users.

API Reference

The API gives access to filings and filing metadata. Filings are PDF zip files with the filing and supporting documents. Filing metadata is structured data we extract from the filings.

Reference for the FilingScout API — search filings and companies, retrieve full filing composites, and access section-level data including rate information, rate changes, documents, and correspondence.

Base URL
https://api.staging.filingscout.com
API prefix
/api/v1
Format
JSON over HTTPS (GET only)
Authentication
API key via Authorization: Bearer

Quick start

Step 1

Get your API key

Create a free account and generate an API key from your dashboard in seconds.

Step 2

Make your first request

Call any /api/v1 endpoint with your key in the Authorization header.

Step 3

Start building

Search filings by state and type, then drill into rate information, documents, and more.

Authentication

All endpoints require a FilingScout API key. Keys are issued from your dashboard and start with fs_live_. Pass the key as a Bearer token or via the X-Api-Key header.

Authorization: Bearer YOUR_API_KEY

Pagination

Search endpoints (/filings/search and /companies/search) accept limit and offset query parameters and return a JSON array.

  • limit — max rows per page (default up to 20; plan caps: Free 100, Basic 500, Premium 1,000)
  • offset — rows to skip (default 0)
  • To page through results, increment offset by limit on each request: ?limit=100&offset=0, then ?limit=100&offset=100, etc.

Error handling

Errors return a JSON body with a detail field describing what went wrong.

{
  "detail": "No filing found for serff_id=UNKNOWN-000."
}
StatusMeaning
401 UnauthorizedMissing, invalid, or expired API key / bearer token.
403 ForbiddenPlan entitlement denied (e.g. Free downloads, Free/Basic Glacier retrieval, or export below Premium).
202 AcceptedGlacier restore in progress on a download. Retry using Retry-After.
404 Not FoundThe requested filing or company does not exist.
429 Too Many RequestsPer-minute rate, monthly quota, or concurrency limit exceeded. Check Retry-After and X-Quota-* / X-RateLimit-* headers.
503 Service UnavailableA required database table is not available in the connected data store.

Filings

Search filings and retrieve header records, full composites, and section-level data — including rate information, rate changes, documents, and correspondence.

GET/api/v1/filings/{serff_id}Auth required

Get a filing

Retrieve the header record for a single filing by its `serff_id`.

Path parameters

  • serff_id (string)required — SERFF tracking ID.

Response — Filing

Single filing record from serff_index.

  • serff_id (string) — SERFF tracking ID (primary filing identifier).
  • state (string) — Two-letter state code.
  • date_submitted (date) — Submission date.
  • disposition_date (date | null) — Disposition date.
  • filing_type (string) — Filing type (e.g. Rate, Rule, Form).
  • filing_status (string) — Filing status.
  • serff_status (string) — SERFF system status.
  • state_status (string) — State regulator status.
  • state_status_last_changed (date | null) — When state status last changed.
  • data_rk (string | integer) — Internal data row key.
{
  "serff_id": "ALLS-133123456",
  "state": "CA",
  "date_submitted": "2026-03-15",
  "disposition_date": "2026-05-01",
  "filing_type": "Rate",
  "filing_status": "Approved",
  "serff_status": "Closed",
  "state_status": "Approved",
  "state_status_last_changed": "2026-05-01",
  "data_rk": "8812"
}

Error responses

  • 401Missing or invalid API key.
  • 404No filing found for the given serff_id.
GET/api/v1/filings/{serff_id}/fullAuth required

Get full filing

Retrieve a filing and all related sections in a single response — general information, fees, rate information, rate changes, companies, documents, and correspondence.

Path parameters

  • serff_id (string)required — SERFF tracking ID.

Response — FilingFull

Composite object with the filing header and all available section data. Section objects are `null` when no data exists for that filing.

  • serff_id (string) — The requested SERFF tracking ID.
  • filing (object) — serff_index header record.
  • general_information (object | null) — Product, TOI, and effective dates.
  • fee_information (object | null) — Filing fee details.
  • rate_information (object | null) — Rate filing method and revision history.
  • companies (Company[]) — Insurers associated with this filing.
  • documents (Document[]) — Attached filing documents.
  • rate_changes (RateChange[]) — Per-company rate change lines.
  • objection_letters (ObjectionLetter[]) — Regulator objection letters with nested objections.
  • response_letters (ResponseLetter[]) — Company response letters.
{
  "serff_id": "ALLS-133123456",
  "filing": { "serff_id": "ALLS-133123456", "state": "CA", "filing_type": "Rate", "filing_status": "Approved" },
  "general_information": {
    "serff_id": "ALLS-133123456",
    "toi": "20.0 Homeowners",
    "sub_toi": "01.0 Homeowners",
    "product_name": "Homeowners Program",
    "effective_new_date": "2026-06-01",
    "description": "Annual rate revision"
  },
  "fee_information": { "serff_id": "ALLS-133123456", "fee_required": "Yes", "fee_amount": 50.0, "total": 50.0 },
  "rate_information": {
    "serff_id": "ALLS-133123456",
    "filing_method": "File & Use",
    "rate_change_type": "Increase",
    "last_rate_revision_percent": 4.2,
    "last_rate_revision_date": "2025-01-15"
  },
  "companies": [{ "company_id": 42, "company_name": "Allstate Insurance Company", "naic_code": 23787 }],
  "documents": [{ "document_id": 1, "document_type": "Rate/Rule", "doc_name": "Rate Filing Memorandum" }],
  "rate_changes": [{
    "rate_id": 7,
    "indicated_rate_percent": 5.1,
    "rate_impact_percent": 4.2,
    "premium_change": 1250000.0,
    "company": { "company_id": 42, "company_name": "Allstate Insurance Company" }
  }],
  "objection_letters": [],
  "response_letters": []
}

Error responses

  • 401Missing or invalid API key.
  • 404No filing found for the given serff_id.

Notes

  • Prefer this endpoint when you need the complete picture. Use section endpoints below when you only need one part.
GET/api/v1/filings/{serff_id}/general-informationAuth required

General information

Product and filing metadata — type of insurance, product name, effective dates, and description.

Path parameters

  • serff_id (string)required — SERFF tracking ID.

Response — GeneralInformation | null

General information record, or `null` if none exists.

  • serff_id (string) — SERFF tracking ID.
  • num_pages (integer | null) — Number of pages in the filing.
  • toi (string | null) — Type of insurance.
  • sub_toi (string | null) — Sub-type of insurance.
  • product_name (string | null) — Product name.
  • project_code (string | null) — Project code.
  • project_name (string | null) — Project name.
  • doi_code (string | null) — Department of Insurance code.
  • effective_new_date (date | null) — New business effective date.
  • effective_renew_date (date | null) — Renewal effective date.
  • new_business_date (date | null) — New business date.
  • renew_business_date (date | null) — Renew business date.
  • deemer_date (date | null) — Deemer date.
  • description (string | null) — Filing description.
{
  "serff_id": "ALLS-133123456",
  "toi": "20.0 Homeowners",
  "sub_toi": "01.0 Homeowners",
  "product_name": "Homeowners Program",
  "effective_new_date": "2026-06-01",
  "effective_renew_date": "2026-06-01",
  "description": "Annual rate revision for homeowners program"
}

Error responses

  • 401Missing or invalid API key.
  • 404Filing not found (serff_id does not exist).
GET/api/v1/filings/{serff_id}/fee-informationAuth required

Fee information

State filing fee details for a filing.

Path parameters

  • serff_id (string)required — SERFF tracking ID.

Response — FeeInformation | null

Fee information record, or `null` if none exists.

  • serff_id (string) — SERFF tracking ID.
  • fee_required (string | null) — Whether a fee is required.
  • fee_amount (number | null) — Base fee amount.
  • retaliatory (string | null) — Retaliatory fee indicator.
  • per_company (number | null) — Per-company fee amount.
  • total (number | null) — Total fee amount.
{
  "serff_id": "ALLS-133123456",
  "fee_required": "Yes",
  "fee_amount": 50.0,
  "retaliatory": "No",
  "per_company": 50.0,
  "total": 50.0
}

Error responses

  • 401Missing or invalid API key.
  • 404Filing not found.
GET/api/v1/filings/{serff_id}/rate-informationAuth required

Rate information

Rate filing metadata — filing method, rate change type, and the most recent rate revision.

Path parameters

  • serff_id (string)required — SERFF tracking ID.

Response — RateInformation | null

Rate information record, or `null` if this is not a rate filing or data is unavailable.

  • serff_id (string) — SERFF tracking ID.
  • filing_method (string | null) — Filing method (e.g. File & Use, Prior Approval).
  • rate_change_type (string | null) — Type of rate change (e.g. Increase, Decrease).
  • last_rate_revision_percent (number | null) — Percent change from the last rate revision.
  • last_rate_revision_date (date | null) — Date of the last rate revision.
  • last_filing_id (string | null) — SERFF ID of the prior rate filing.
  • last_filing_pk (integer | null) — Internal key of the prior rate filing.
{
  "serff_id": "ALLS-133123456",
  "filing_method": "File & Use",
  "rate_change_type": "Increase",
  "last_rate_revision_percent": 4.2,
  "last_rate_revision_date": "2025-01-15",
  "last_filing_id": "ALLS-133098765",
  "last_filing_pk": 9876
}

Error responses

  • 401Missing or invalid API key.
  • 404Filing not found.

Notes

  • For per-company rate change lines (indicated rate, premium impact, etc.), use GET /filings/{serff_id}/rate-changes.
GET/api/v1/filings/{serff_id}/rate-changesAuth required

Rate changes

Per-company rate change lines for a filing, including indicated rate, rate impact, and premium change.

Path parameters

  • serff_id (string)required — SERFF tracking ID.

Response — RateChange[]

Array of rate change records, each with rate metrics and an embedded company object.

  • rate_id (integer) — Rate change line ID.
  • serff_id (string) — SERFF tracking ID.
  • company_id (integer | null) — Associated company ID.
  • indicated_rate_percent (number | null) — Indicated overall rate change percent.
  • rate_impact_percent (number | null) — Rate impact percent.
  • premium_change (number | null) — Dollar premium change.
  • num_impacted (integer | null) — Number of policies impacted.
  • premium_program (number | null) — Premium program amount.
  • max_change_percent (number | null) — Maximum percent change.
  • min_change_percent (number | null) — Minimum percent change.
  • company (object | null) — Embedded company (company_id, company_name, naic_code, state, company_type).
[
  {
    "rate_id": 7,
    "serff_id": "ALLS-133123456",
    "company_id": 42,
    "indicated_rate_percent": 5.1,
    "rate_impact_percent": 4.2,
    "premium_change": 1250000.0,
    "num_impacted": 45000,
    "max_change_percent": 8.5,
    "min_change_percent": 2.1,
    "company": {
      "company_id": 42,
      "company_name": "Allstate Insurance Company",
      "naic_code": 23787,
      "state": "IL",
      "company_type": "Property & Casualty"
    }
  }
]

Error responses

  • 401Missing or invalid API key.
  • 404Filing not found.
GET/api/v1/filings/{serff_id}/companiesAuth required

Filing companies

List all insurers associated with a filing.

Path parameters

  • serff_id (string)required — SERFF tracking ID.

Response — Company[]

Array of company records linked to this filing.

  • company_id (integer) — Unique company identifier.
  • company_name (string) — Legal company name.
  • naic_code (integer | null) — NAIC company code.
  • address (string | null) — Company address.
  • phone (string | null) — Company phone number.
  • group_code (integer | null) — Insurance group code.
  • group_name (string | null) — Insurance group name.
  • fein (string | null) — Federal employer ID.
  • state (string | null) — State of domicile.
  • company_type (string | null) — Company type classification.
  • state_id (string | null) — State-assigned company ID.
[
  {
    "company_id": 42,
    "company_name": "Allstate Insurance Company",
    "naic_code": 23787,
    "group_code": 100,
    "group_name": "Allstate Insurance Group",
    "state": "IL",
    "company_type": "Property & Casualty"
  }
]

Error responses

  • 401Missing or invalid API key.
  • 404Filing not found.
GET/api/v1/filings/{serff_id}/documentsAuth required

Documents

List documents attached to a filing. Optionally filter by document type.

Path parameters

  • serff_id (string)required — SERFF tracking ID.

Query parameters

  • document_type (string) — Filter by document type (e.g. Rate/Rule, Form, Supporting Document).

Response — Document[]

Array of document records, ordered by version date.

  • document_id (integer) — Document ID.
  • serff_id (string) — SERFF tracking ID.
  • document_type (string) — Document type classification.
  • doc_name (string | null) — Document name.
  • version_date (date | null) — Document version date.
[
  {
    "document_id": 1,
    "serff_id": "ALLS-133123456",
    "document_type": "Rate/Rule",
    "doc_name": "Rate Filing Memorandum",
    "version_date": "2026-03-15"
  }
]

Error responses

  • 401Missing or invalid API key.
  • 404Filing not found.
GET/api/v1/filings/{serff_id}/objection-lettersAuth required

Objection letters

Regulator objection letters for a filing, each with nested individual objections.

Path parameters

  • serff_id (string)required — SERFF tracking ID.

Response — ObjectionLetter[]

Array of objection letters with nested objections arrays.

  • objection_letter_id (integer) — Letter ID.
  • letter_status (string | null) — Letter status.
  • letter_dated (date | null) — Date of the letter.
  • letter_submitted (date | null) — Date submitted.
  • response_due (date | null) — Response due date.
  • letter_text (string | null) — Full letter text.
  • objections (object[]) — Nested objections (objection_id, objection_text).
[
  {
    "objection_letter_id": 3,
    "serff_id": "ALLS-133123456",
    "letter_status": "Open",
    "letter_dated": "2026-04-10",
    "response_due": "2026-04-24",
    "letter_text": "The department has the following objections...",
    "objections": [
      { "objection_id": 12, "objection_letter_id": 3, "objection_text": "Actuarial support is insufficient." }
    ]
  }
]

Error responses

  • 401Missing or invalid API key.
  • 404Filing not found.
GET/api/v1/filings/{serff_id}/response-lettersAuth required

Response letters

Company response letters submitted for a filing.

Path parameters

  • serff_id (string)required — SERFF tracking ID.

Response — ResponseLetter[]

Array of response letter records.

  • response_letter_id (integer) — Letter ID.
  • letter_status (string | null) — Letter status.
  • letter_dated (date | null) — Date of the letter.
  • letter_submitted (date | null) — Date submitted.
  • letter_text (string | null) — Full letter text.
[
  {
    "response_letter_id": 5,
    "serff_id": "ALLS-133123456",
    "letter_status": "Submitted",
    "letter_dated": "2026-04-20",
    "letter_text": "In response to the department's objections..."
  }
]

Error responses

  • 401Missing or invalid API key.
  • 404Filing not found.

Companies

Search insurers and list their associated filings.

GET/api/v1/companies/{company_id}Auth required

Get a company

Retrieve a single company by its `company_id`.

Path parameters

  • company_id (integer)required — Unique company identifier.

Response — Company

Single company record.

  • company_id (integer) — Unique company identifier.
  • company_name (string) — Legal company name.
  • naic_code (integer | null) — NAIC company code.
  • address (string | null) — Company address.
  • phone (string | null) — Company phone number.
  • group_code (integer | null) — Insurance group code.
  • group_name (string | null) — Insurance group name.
  • fein (string | null) — Federal employer ID.
  • state (string | null) — State of domicile.
  • company_type (string | null) — Company type classification.
  • state_id (string | null) — State-assigned company ID.
{
  "company_id": 42,
  "company_name": "Allstate Insurance Company",
  "naic_code": 23787,
  "address": "2775 Sanders Rd, Northbrook, IL 60062",
  "phone": "847-402-5000",
  "group_code": 100,
  "group_name": "Allstate Insurance Group",
  "state": "IL",
  "company_type": "Property & Casualty"
}

Error responses

  • 401Missing or invalid API key.
  • 404No company found for the given company_id.
GET/api/v1/companies/{company_id}/filingsAuth required

Company filings

List all filings associated with a company. Returns the company record alongside its filings.

Path parameters

  • company_id (integer)required — Unique company identifier.

Query parameters

  • limit (integer) · default 20 · 1–plan max — Maximum rows to return. Cap depends on plan (Free 100, Basic 500, Premium 1,000).
  • offset (integer) · default 0 · ≥ 0 — Number of rows to skip.

Response — { company, filings }

Company record plus an array of associated filing records.

  • company (Company) — The requested company record.
  • filings (Filing[]) — Filing header records for this company.
{
  "company": {
    "company_id": 42,
    "company_name": "Allstate Insurance Company",
    "naic_code": 23787,
    "state": "IL"
  },
  "filings": [
    {
      "serff_id": "ALLS-133123456",
      "state": "CA",
      "date_submitted": "2026-03-15",
      "filing_type": "Rate",
      "filing_status": "Approved"
    }
  ]
}

Error responses

  • 401Missing or invalid API key.
  • 404No company found for the given company_id.

Examples

Search filings by state and type

GET /api/v1/filings/search — filter by state, filing_type, filing_status, serff_id, or q

const response = await fetch(
  "https://api.staging.filingscout.com/api/v1/filings/search?state=CA&filing_type=Rate&limit=10",
  {
    headers: {
      Authorization: "Bearer YOUR_API_KEY",
    },
  },
);

const filings = await response.json();
console.log(`${filings.length} filings`, filings);

Get a filing by serff_id

GET /api/v1/filings/{serff_id}

curl "https://api.staging.filingscout.com/api/v1/filings/ALLS-133123456" \
  -H "Authorization: Bearer YOUR_API_KEY"

Get full filing with rate data

GET /api/v1/filings/{serff_id}/full — returns rate information, rate changes, documents, companies, and more in one response

curl "https://api.staging.filingscout.com/api/v1/filings/ALLS-133123456/full" \
  -H "Authorization: Bearer YOUR_API_KEY"

Get rate information

GET /api/v1/filings/{serff_id}/rate-information — filing method, rate change type, and last revision. Use /rate-changes for per-company rate lines.

curl "https://api.staging.filingscout.com/api/v1/filings/ALLS-133123456/rate-information" \
  -H "Authorization: Bearer YOUR_API_KEY"

Search companies

GET /api/v1/companies/search — filter by state, naic_code, or q, then use GET /companies/{company_id}/filings

curl "https://api.staging.filingscout.com/api/v1/companies/search?state=IL&q=allstate&limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"

Rate limits & quotas

FilingScout enforces per-plan monthly quotas and per-minute rate limits at the platform layer. Successful responses include X-RateLimit-* headers. Premium unlimited usage is subject to fair use (100 req/min after 100,000 requests in a billing month). Downloads are blocked on Free; Glacier restore and data export require Premium or Enterprise.

PlanMonthly callsRate limitRecords / reqAPI keys
Free20010 / min1001
Basic1,000100 / min5001
PremiumUnlimited*500 / min (100 after 100,000)1,0005
EnterpriseCustomCustomCustomCustom

Try it live

Reach our team at support@filingscout.com or experiment in the API Explorer.

Open API Explorer