MuniSpot REST API
Programmatic access to standardized financial statements, MuniScore and economic indicators for 20,000+ U.S. governments. Built from audited ACFRs and structured for institutional platforms, research tools and analytical workflows.
Build on MuniSpot
Self-serve API keys, a free tier for prototyping, four REST endpoints and an MCP server. Start with authentication.
Get started →Evaluate and integrate
For data teams, buy-side credit and institutional research. Integration patterns, sandbox access, SLA, redistribution terms.
Enterprise overview →https://www.munispot.com/api/v1All requests need a valid API key, passed as a Bearer token in the Authorization header. Generate one in your account, or contact sales for enterprise access.
Intended use cases
Endpoints
Rate limits
| Plan | Price | Requests per month | Endpoints | Support |
|---|---|---|---|---|
| Starter | Free | 100 | All 4 endpoints | Community forum |
| Professional | $999/month | 10,000 | All 4 endpoints | Email support |
| Enterprise | Custom | Unlimited | All endpoints, plus webhooks | Dedicated account support |
For full plan details and annual billing, see Pricing.
Authentication
Every request must include your API key as a Bearer token in the Authorization header.
Authorization: Bearer YOUR_API_KEY
Example: cURL
curl "https://www.munispot.com/api/v1/entities?per_page=5" \ -H "Authorization: Bearer ms_live_abc123..."
Example: Python
import requests response = requests.get( "https://www.munispot.com/api/v1/entities", headers={"Authorization": f"Bearer {API_KEY}"}, params={"state": "CA", "per_page": 10} ) data = response.json()
Keep your key secret. Never expose API keys in client-side code, public repositories or browser requests. Call the API from a server, and keep keys in environment variables.
Errors and rate limits
Every error response uses the same JSON envelope, so you can handle them in one place.
Response format
{
"status": "success",
"data": { ... },
"meta": { ... }
}{
"status": "error",
"code": 401,
"message": "Invalid API key"
}HTTP status codes
| Code | Meaning | Common cause |
|---|---|---|
| 200 | Success | Request processed normally |
| 401 | Unauthorized | Missing, invalid or deactivated API key |
| 404 | Not found | EIN doesn't exist, or no data for that fiscal year |
| 429 | Rate limited | Monthly request limit exceeded |
| 500 | Server error | Internal error, contact support |
Rate limit behavior
Each API key has a monthly request quota (default 100) that resets on the 1st of each month, UTC. Past the limit, requests return 429 until the next reset.
Tip. Cache responses for governments that don't change often. Scores are recalculated monthly; financial data updates once per fiscal year.
Search and filter all municipalities. Returns paginated results with basic profile data. Use the municipality or scores endpoint for MuniScore data.
Query parameters
| Name | Type | Description |
|---|---|---|
| q | string | Search by name (case-insensitive partial match) |
| state | string | Two-letter state code, e.g. CA, NY |
| sector | string | Government type: city county school_district special_district state utility community_college public_university |
| fiscal_year | integer | Fiscal year.Default 2024 |
| page | integer | Page number.Default 1 |
| per_page | integer | Results per page (1 to 50).Default 25 |
// Send a request to see a live response.
curl "https://www.munispot.com/api/v1/entities?state=WI§or=city&fiscal_year=2024&per_page=2&page=1" \ -H "Authorization: Bearer YOUR_API_KEY"
Full profile for one government: municipality information, every score component, individual metric values and a generated fiscal-year financial summary.
Path parameters
| Name | Type | Description |
|---|---|---|
| einrequired | string | Employer Identification Number |
Query parameters
| Name | Type | Description |
|---|---|---|
| fiscal_year | integer | Fiscal year.Default 2023 |
Response fields
| Name | Type | Description |
|---|---|---|
| overall_score | number | Composite MuniScore (1 to 99) |
| scorecard | string | v5 (government MuniScore) or ut_v1 (utility MuniScore). Scores compare only within one scorecard. |
| factor_details | object | ut_v1 only: factors, metrics (days_cash, dsc, debt_to_revenue, asset_condition_yrs, om_musd), flags and column scope. The four v5 factor fields below are null for ut_v1. |
| confidence_badge | string | HIGH, MODERATE, LOW or INSUFFICIENT |
| economy_score | number | Economy factor (25% weight) |
| budgetary_score | number | Budgetary factor (10% weight) |
| reserves_score | number | Reserves factor (40% weight) |
| debt_score | number | Debt factor (25% weight) |
| financial_summary | string | Generated fiscal-year narrative |
// Send a request to see a live response.
curl "https://www.munispot.com/api/v1/entities/396005924?fiscal_year=2023" \ -H "Authorization: Bearer YOUR_API_KEY"
Scores only. Returns the composite score, four component scores with weights, and every metric value in a structured format. The response carries scorecard: for v5 the components are economy, budgetary, reserves and debt; for a utility (ut_v1) they are economy, system, liquidity and debt, the metrics are days_cash, dsc, debt_to_revenue (x), asset_condition_yrs and om_musd, and flags and factor_details record how each metric was read.
Path parameters
| Name | Type | Description |
|---|---|---|
| einrequired | string | Employer Identification Number |
Query parameters
| Name | Type | Description |
|---|---|---|
| fiscal_year | integer | Fiscal year.Default 2023 |
Score interpretation
| Score | Tier |
|---|---|
| 90 to 99 | Very strong |
| 75 to 89 | Strong |
| 50 to 74 | Moderate |
| 25 to 49 | Low |
| 1 to 24 | Very low |
Confidence badges
| Badge | Metrics available |
|---|---|
| HIGH | 7 to 9 |
| MODERATE | 5 to 6 |
| LOW | 3 to 4 |
| INSUFFICIENT | 0 to 2 |
// Send a request to see a live response.
curl "https://www.munispot.com/api/v1/entities/396005924/scores?fiscal_year=2023" \ -H "Authorization: Bearer YOUR_API_KEY"
Standardized financial line items from the government's ACFR (Annual Comprehensive Financial Report): balance sheet, income statement, reconciliation and long-term obligations.
Path parameters
| Name | Type | Description |
|---|---|---|
| einrequired | string | Employer Identification Number |
Query parameters
| Name | Type | Description |
|---|---|---|
| fiscal_yearrequired | integer | Fiscal year. |
| statement_type | string | Filter: balance_sheet income_statement reconciliation_statement long_term_obligations. Utilities and community colleges: bta_net_position bta_activities bta_cash_flows bta_coverage (see Business-type statements). |
| fund_type | string | Filter by fund type, e.g. General Fund |
| column_index | integer | One fund column: 1 = General Fund, -1 = Total Governmental Funds. Omit for every fund column (up to 1,000 line items). |
Line item fields
| Name | Type | Description |
|---|---|---|
| value | number | Dollar amount, already adjusted for scale |
| class_1 | string | Primary classification (e.g. CASH AND CASH EQUIVALENTS) |
| class_2 | string | Secondary classification (ASSETS, LIABILITIES and so on) |
| column_index | integer | 1 = General Fund, -1 = Total Governmental Funds |
| observed_header | string | Column title from the source statement |
| relative_index | integer | Row order within the statement |
// Send a request to see a live response.
curl "https://www.munispot.com/api/v1/entities/396005924/financials?fiscal_year=2023&statement_type=balance_sheet" \ -H "Authorization: Bearer YOUR_API_KEY"
Data coverage
Sectors
| Value | Description |
|---|---|
| city | Cities, towns, villages, boroughs |
| county | County governments |
| school_district | K-12 school districts |
| special_district | Other special-purpose districts (fire, library, transit and so on) |
| state | State governments |
| utility | Standalone water, sewer, electric and gas utilities (business-type statements; utility MuniScore, scorecard ut_v1) |
| community_college | Public community and technical colleges (business-type statements; college and university MuniScore, scorecard he_v1) |
| public_university | Public four-year universities (business-type statements; college and university MuniScore, scorecard he_v1) |
Data dictionary: classifications
Every line item from Get financials carries a two-level classification. Source ACFRs label the same concept hundreds of ways; we map each line to a fixed taxonomy so property tax revenue, say, compares directly across all 20,000+ governments and every fiscal year.
The two fields
Despite the names, class_2 is the broad category and class_1 is the specific line item within it. Read them as a pair, scoped to statement_type. A class_1 value only has meaning inside its class_2.
| Name | Type | Description |
|---|---|---|
| class_2 | string | Statement category the line rolls up to. Valid values depend on statement_type (below). |
| class_1 | string | Normalized line-item label within that category, e.g. PROPERTY TAX REVENUES inside REVENUES. |
Worked example
One property-tax row from a city income statement:
{
"fiscal_year": 2023,
"statement_type": "income_statement",
"class_2": "REVENUES",
"class_1": "PROPERTY TAX REVENUES",
"column_index": 1,
"value": 48217000
}Categories by statement type
Valid class_2 values differ per statement. The most common are below. Rows whose class_2 begins with TOTAL or SUBTOTAL are pre-computed roll-ups, not detail lines.
| Value | Captures |
|---|---|
| balance_sheet | ASSETS, LIABILITIES, DEFERRED INFLOWS OF RESOURCES, DEFERRED OUTFLOW OF RESOURCES, plus the GASB 54 fund-balance classes NONSPENDABLE, RESTRICTED, COMMITTED, ASSIGNED, UNASSIGNED. |
| income_statement | REVENUES, EXPENSES, OTHER FINANCING SOURCES AND USES, NET INCOME, FUND BALANCES BEGINNING, FUND BALANCES ENDING. |
| long_term_obligations | The debt roll-forward columns: BEGINNING_BALANCE, ADDITION, REDUCTION, OTHER_CHANGE (a printed transfers, adjustments or restatement column; non-zero amounts only), ENDING_BALANCE, DUE_IN_ONE_YEAR. Here the instrument type is in class_1 (below). |
| reconciliation_statement | Reconciling items between fund-level and government-wide presentation. Sparse coverage; mostly long-term-obligation adjustments. |
Revenue line items class_2 = REVENUES
| Value | Captures |
|---|---|
| PROPERTY TAX REVENUES | Ad valorem taxes on real and personal property. Usually the largest own-source revenue for cities and counties. |
| INTERGOVERNMENTAL REVENUE | Grants, shared taxes and aid from state and federal governments. |
| LOCAL REVENUE | Locally generated revenue, common on school-district statements. |
| FEDERAL REVENUE | Direct federal grants and aid (distinct from federal money passed through the state). |
| CHARGES FOR SERVICES | Fees for government services such as utilities, recreation and inspections. |
| USE OF MONEY AND PROPERTY | Rents, leases and earnings on government-held property and balances. |
| LICENSES AND PERMITS | Business licenses, building permits and regulatory fees. |
| FINES AND FORFEITURES | Court fines, penalties and forfeited collateral. |
| INTEREST AND DIVIDEND REVENUE | Investment earnings. Some statements report this as INTEREST INCOME. |
| TAX REVENUES | Tax revenue not classified above (for example sales or use taxes). |
| FRANCHISE TAX REVENUES | Franchise fees from utility, cable and similar operators. |
| INCOME TAX REVENUES | Local income or earnings taxes, where levied. |
| SPECIAL ASSESSMENTS | Levies on benefited properties to fund specific improvements. |
| PAYMENTS IN LIEU OF TAXES | PILOT payments from tax-exempt organizations in place of property tax. |
| CONTRIBUTIONS AND DONATIONS | Gifts and contributed capital. |
| MISCELLANEOUS | Revenue in the source statement not mapped to a specific category. |
Expense line items class_2 = EXPENSES
| Value | Captures |
|---|---|
| INSTRUCTIONAL EXPENSES | Direct classroom and teaching costs. School districts. |
| SUPPORT SERVICES | Non-instructional school support: administration, transportation, operations. |
| GENERAL AND ADMINISTRATIVE EXPENSES | General government and overhead costs. |
| PUBLIC SAFETY | Police, fire, EMS and corrections. |
| CAPITAL OUTLAY | Spending on capital assets such as equipment and construction. |
| DEBT SERVICE, ANNUAL PRINCIPAL PAYMENT | Principal repaid on long-term debt during the year. |
| DEBT SERVICE, INTEREST EXPENDITURE | Interest paid on outstanding debt. |
| CULTURE AND RECREATION | Parks, libraries, museums and recreation programs. |
| TRANSPORTATION EXPENSES | Transit and transportation programs. Roads may also appear under HIGHWAYS AND STREETS. |
| HIGHWAYS AND STREETS | Road and street construction and maintenance. |
| HEALTH SERVICES | Public health programs. Some governments use ENVIRONMENTAL AND HEALTH SERVICES. |
| HOUSING AND COMMUNITY SERVICES | Housing and community-development programs. |
| ECONOMIC DEVELOPMENT | Economic-development and redevelopment activity. |
| MAINTENANCE AND REPAIRS | Upkeep of facilities and infrastructure. |
| INTERGOVERNMENTAL EXPENSES | Payments made to other governments. |
| JUDICIAL | Courts and the justice system. |
| LEGISLATIVE | Governing-body and legislative costs. |
| MISCELLANEOUS | Expense in the source statement not mapped to a specific function. |
Balance-sheet line items
Assets class_2 = ASSETS
| Value | Captures |
|---|---|
| CASH AND CASH EQUIVALENTS | Cash, deposits and highly liquid short-term holdings. |
| INVESTMENTS, FAIR VALUE | Investment portfolio reported at fair value. |
| RECEIVABLE, ACCOUNTS | Amounts owed from non-tax sources. |
| TAXES RECEIVABLE | Levied taxes not yet collected. |
| DUE FROM OTHER FUNDS | Interfund amounts owed to this fund. |
| DUE FROM OTHER GOVERNMENTS | Grants and shared revenue receivable from other governments. |
| INVENTORIES | Supplies and materials held for use. |
| PREPAID EXPENSES AND OTHER ASSETS | Prepaid items and other current assets. |
| ADVANCES TO OTHER FUNDS | Long-term interfund advances receivable. |
| OTHER ASSETS | Assets not mapped to a specific category. |
Liabilities class_2 = LIABILITIES
| Value | Captures |
|---|---|
| ACCOUNTS PAYABLE | Amounts owed to vendors and suppliers. |
| ACCRUED PAYABLE | Accrued liabilities not yet invoiced. |
| ACCRUED SALARIES | Wages and benefits earned but unpaid at period end. |
| UNEARNED REVENUE | Cash received before the revenue is earned. |
| UNAVAILABLE REVENUE | Earned revenue deferred because it is not yet available under modified accrual. |
| DUE TO OTHER FUNDS | Interfund amounts this fund owes. |
| DUE TO OTHER GOVERNMENTS | Amounts payable to other governments. |
| NOTES PAYABLE | Short-term notes and similar obligations recorded at fund level. |
| OTHER LIABILITIES | Liabilities not mapped to a specific category. |
Fund balance is reported through class_2, not class_1. The five GASB 54 classes (NONSPENDABLE, RESTRICTED, COMMITTED, ASSIGNED, UNASSIGNED) describe spending constraints from least to most flexible.
Business-type statements utilities and community colleges
Standalone utilities and community colleges publish proprietary (business-type) statements instead of governmental fund statements. For them the endpoint returns these statement types only; governments never return them. Values are dollars as printed. class_1 is the standardized line class, or null for detail and subtotal lines; class_2 is null except on bta_coverage. column_index 1 to n are the columns in page order (one per system, e.g. Electric, Gas, Water), and -1 is a printed total column when the audit prints one.
| Name | Type | Description |
|---|---|---|
| bta_net_position | statement | Statement of Net Position: CASH AND EQUIVALENTS, INVESTMENTS, CAPITAL ASSETS NET, LONG-TERM DEBT CURRENT / NONCURRENT, NET PENSION LIABILITY, DEFERRED OUTFLOWS / INFLOWS, TOTAL NET POSITION and others. Accumulated depreciation is negative. |
| bta_activities | statement | Statement of Revenues, Expenses and Changes in Net Position: TOTAL OPERATING REVENUES, TOTAL OPERATING EXPENSES (both positive), OPERATING INCOME, nonoperating lines (expenses negative, e.g. INTEREST EXPENSE), STATE APPROPRIATIONS, CAPITAL CONTRIBUTIONS, CHANGE IN NET POSITION, NET POSITION ENDING. |
| bta_cash_flows | statement | Statement of Cash Flows: NET CASH FROM OPERATING / NONCAPITAL FINANCING / CAPITAL AND RELATED FINANCING / INVESTING ACTIVITIES, PRINCIPAL and INTEREST PAID ON CAPITAL DEBT (negative), NET CHANGE IN CASH, CASH ENDING. |
| bta_coverage | statement | Utilities only, at most one row: the printed debt service coverage ratio (value, x). class_2 is the basis (net_revenues, printed, covenant); observed_header a flag (covenant_adds_funds, components_disagree); text the printed figure and its source table. |
Several lines can share a class_1 (three INVESTMENTS lines, or a line and its total). For one figure per class, take the last line of the class whose label contains “total”, else the sum of the class's lines; never sum lines whose class_1 is null. When a utility prints several systems and no total column, there is no printed combined figure: any sum across columns is computed.
Debt instrument types statement_type = long_term_obligations
For long-term obligations the instrument type is in class_1 and the roll-forward column is in class_2. For year-end debt, filter class_2 = ENDING_BALANCE.
| Value | Captures |
|---|---|
| BONDS | General-obligation and revenue bonds. Usually the largest obligation. |
| NOTES | Notes payable carried as long-term debt. |
| LOAN | Direct loans and state revolving-fund borrowings. |
| LEASES | Lease liabilities (GASB 87). |
| CERTIFICATES | Certificates of participation (COPs). |
| FINANCED_PURCHASE | Financed purchases: installment purchase and lease-purchase agreements, energy performance contracts. Counted as debt. |
| PREMIUM | Unamortized bond premium. DISCOUNT appears as the offsetting item. |
| PENSION | Net pension liability. |
| OPEB | Other post-employment benefit liability (retiree healthcare). |
| COMPENSATED_ABSENCES | Accrued vacation and sick leave owed to employees. |
| CLAIMS_JUDGMENTS | Estimated liabilities for claims, judgments and litigation. |
| UNCATEGORIZED | Obligation in the source statement not mapped to a specific instrument type. |
Working with classifications
- Match case-insensitively. The canonical form is uppercase, but a small share of legacy rows use mixed case (for example
Bonds). Upper-case both sides before comparing. - Exclude roll-up markers when summing detail.
TOTAL,SUBTOTALand anyclass_2beginning withTOTALare pre-computed aggregates. Summing them with detail rows double-counts. - Always pair
class_1withclass_2andstatement_type. Oneclass_1label can appear under more than one category. Never match onclass_1alone.
Need the full enumerated list to map against your current provider? The sandbox starter kit ships a machine-readable classification reference and an audit notebook that reports line-item match rate against ACFR source.
MuniSpot for institutions
Standardized ACFR financials, scoring and economic indicators through the same REST and MCP interfaces single developers use, with the contract terms, refresh commitments and integration support institutional teams need.
Already evaluating? Skip to Sandbox and evaluation for a structured side-by-side data-quality test against your current provider.
Who this is for
What enterprise customers get
- Unlimited requestsNo monthly cap and no per-EIN daily limit. Predictable for batch workloads.
- All 4 REST endpoints and MCPIncluding /financials (ACFR line items, not gated).
- Multi-seat key managementUp to 10 keys per account, per-seat usage attribution, rotation without downtime.
- Bulk extracts and scheduled snapshotsOn request: full-universe Parquet or CSV drops to S3 or GCS.
- Webhooks (roadmap)Notifications on MuniScore changes, new fiscal-year availability or watchlist events.
- Redistribution rightsNegotiated terms for embedding MuniSpot data in client-facing dashboards or research products.
- SLA and dedicated supportUptime commitment, Slack channel, named technical contact.
Next steps
Integration patterns
Four patterns we see in institutional deployments. Pick the one closest to your stack, or combine them. All four use the same REST and MCP interfaces documented here, on the same api/v1 base.
AWarehouse sync
Scheduled ELT into Snowflake, BigQuery or Postgres. The most common pattern for buy-side credit teams. A nightly job pulls /entities for the universe, then iterates per issuer for /scores and /financials, landing rows in your own tables.
import requests, time from datetime import date HEADERS = {"Authorization": f"Bearer {API_KEY}"} BASE = "https://www.munispot.com/api/v1" def sync_universe(state, fiscal_year): page, rows = 1, [] while True: r = requests.get(f"{BASE}/entities", headers=HEADERS, params={"state": state, "per_page": 50, "page": page, "fiscal_year": fiscal_year}) body = r.json() rows.extend(body["data"]) if len(rows) >= body["meta"]["total"]: break page += 1 return rows def sync_scores(ein, fiscal_year): r = requests.get(f"{BASE}/entities/{ein}/scores", headers=HEADERS, params={"fiscal_year": fiscal_year}) return r.json()["data"] if r.status_code == 200 else None # Run nightly; write to warehouse via your loader of choice
BOn-demand lookup from internal apps
An internal credit dashboard or research portal calls MuniSpot per issuer at view time. Best for low-volume, interactive use where freshness matters more than batch efficiency. Cache aggressively: scores recompute monthly, line items annually.
Caching guideline. 24-hour cache on /scores, 7-day cache on /financials, no cache on user-driven searches.
CMCP server for analyst workflows
Point Claude Desktop, Cursor or any MCP client at https://www.munispot.com/api/mcp with your enterprise key. Analysts ask questions in plain language and the agent calls MuniSpot tools without anyone writing HTTP code. Common on credit research desks doing quick comparisons.
See the full MCP setup guide for client-specific configuration.
DBulk extract (on request)
For backtests, model training or large universe scans where REST round-trips are inefficient. We deliver point-in-time Parquet or CSV drops of the full universe, or a custom slice, to your S3 or GCS bucket on your cadence. Enterprise tier only.
Reliability and retry guidance
- GETs are idempotent and safe to retry on network errors.
- Back off exponentially on
429(rate limit) and5xx. - Enterprise keys have no monthly cap; per-second burst limits still apply.
- The schema is versioned by the
/v1path. Breaking changes ship as/v2with a six-month overlap.
Data refresh and coverage
When each data type updates, where it comes from, and the coverage to expect across the universe.
Refresh cadence
| Data type | Source | Refresh | Lag |
|---|---|---|---|
| ACFR financials | Audited ACFRs, issuer-published | Daily ingest of newly filed ACFRs | About 30 to 60 days from filing |
| MuniScore | Computed from ACFR and economy data | Monthly recompute | 1st of each month |
| Economy indicators | Census ACS, BLS, BEA | Annual (ACS), monthly (BLS unemployment) | Federal release schedule |
| Home Price Index | FHFA HPI | Quarterly | About 45 days after quarter end |
| Building permits | Census BPS | Annual | About 6 months |
| Federal Audit Clearinghouse | FAC dataset | Quarterly | About 90 days |
| School enrollment and finance | NCES CCD | Annual | About 12 months |
Coverage
Coverage by sector
MuniSpot covers four core sectors. Special districts (water, fire, transit and so on) are in the database but excluded from the public catalog by default; available by enterprise contract.
- Cities and municipalities, including towns, villages and boroughs
- Counties
- K-12 school districts
- State governments
Freshness signal
Every municipality response includes a fiscal year and a confidence badge based on how many of the 9 underlying metrics were available for that filing. Use the badge to gate downstream decisions when freshness or completeness matters.
Security and compliance
What you need for procurement and legal review. For full attestation packets and DPA negotiation, contact sales.
API security
- All traffic over TLS 1.2 or later. Plain HTTP requests are refused.
- API keys are stored hashed; only a prefix and fingerprint are visible after creation.
- Key rotation is self-serve from your account, without integration downtime.
- Per-key audit log of creation, rotation, revocation and usage events.
- Each response carries a key fingerprint, so a key shared in error can be traced internally.
Data source and provenance
MuniSpot is built only from public-record sources: issuer-published Annual Comprehensive Financial Reports (ACFRs), federal datasets (Census, BLS, BEA, FHFA, NCES) and the Federal Audit Clearinghouse. We do not use MSRB EMMA-restricted material, broker-dealer feeds or any non-public channel. Every as-reported line item is kept alongside our normalized version so you can reconcile to source.
Redistribution and licensing
Default API terms permit internal use only. Redistribution, meaning MuniSpot data in client-facing dashboards, research products or publications, needs an enterprise contract with explicit redistribution rights. Three patterns we support:
- Internal onlyThe default. Use in your own apps, dashboards, models and research.
- Attributed embedShow data in client-facing products with required attribution.
- White labelEmbed without attribution under negotiated terms.
SLA and support
Enterprise contracts include a written SLA. Default targets:
- 99.5% uptimeOn the REST API and MCP server.
- P95 latency under 500 msOn municipality and score endpoints.
- Email and Slack supportResponse times by severity.
- Named technical contactFor integration support and incident handling.
Procurement documents. If your security or legal team needs a vendor questionnaire, DPA or attestation packet, request it from contact sales.
Sandbox and evaluation
A structured way to test MuniSpot against your current municipal data provider. We provision a time-bounded enterprise key, hand you a starter kit, and walk through a side-by-side data-quality comparison.
Status. During early access the sandbox is provisioned by hand. Request access from Contact sales and we reply within one business day.
What's in the starter kit
- Time-bounded enterprise API keyTwo-week key with unlimited requests and no per-EIN daily cap, scoped to your evaluation universe.
- Postman or Insomnia collectionPre-wired requests for every endpoint, with sample EINs across cities, counties, school districts and states.
- Two Jupyter notebooks, Colab-readyA quickstart (key to dataframes in minutes) and a data-quality audit comparing coverage, freshness, line-item match rate and score correlation with your current provider.
- MCP server configDrop-in JSON for Claude Desktop, Cursor or Gemini CLI to query MuniSpot in plain language during evaluation.
- Sample SQLMaterialized-view definitions for landing MuniSpot data in Snowflake or BigQuery.
Quickstart notebooks
Two runnable notebooks. Open them in Google Colab with no local setup, or download and run anywhere. Your API key is entered at runtime with getpass, so it is never written into the file.
To run in Colab: open colab.research.google.com, choose File, Upload notebook, and select the downloaded file.
Recommended evaluation steps
- Pick 25 to 50 issuers you know well: a mix of large GO issuers, mid-size cities, school districts and at least one distressed name.
- Run the audit notebook against both providers. It reports coverage, freshness (latest fiscal year available), line-item match rate against ACFR source, and score correlation if your current provider has scores.
- Spot-check 3 to 5 issuers by opening the source ACFR and comparing line items in both providers to the published statement.
- Try the MCP server in Claude Desktop with one of your credit analysts. Ask the questions you'd normally ask an associate.
- Review the schema against your warehouse model to find joins, naming gaps and missing fields.
Try it live now
Every endpoint above has a Try it panel that calls the production API with your key. While we provision your sandbox kit, you can check the shape of every response in your browser:
Contact sales
For enterprise pricing, sandbox provisioning, contract terms, redistribution rights or technical onboarding.
What to include in your message
- Your firm and roleSo we route you to the right technical contact.
- Use caseInternal credit workflow, client dashboard, research product, model input and so on.
- VolumeRough number of issuers in scope and expected request cadence.
- Integration targetWarehouse (Snowflake, BigQuery and so on), BI tool or app stack.
- Redistribution needsInternal only, attributed embed or white label.
- TimelineWhen you'd like to be in production.
Already have a key? Start now: the Try it panels on every endpoint call the real API with your key. Get in touch when you're ready for enterprise terms or a sandbox kit.