ParseForge Scrapers

EMMA Municipal Bonds Scraper

parseforge/emma-municipal-bonds-scraper

AutomationOther

Scrape municipal bond securities from EMMA by state, with optional filters for issuer name and coupon rate. Returns issuer, coupon, maturity, yield, principal, and rating.

Run this scraper See the API call
Total users
13
Monthly active
0
Total runs
261
Bookmarked
1
Rating
5.0 (1)
Last modified
8 days ago

Overview

ParseForge

EMMA Municipal Bonds Scraper

Scrape municipal bond data from EMMA, the official SEC-designated source, for any U.S. state. Each bond record includes issuer name, coupon rate, maturity date, offering yield, principal amount, and credit rating. No API key or registration required. Export to CSV, JSON, Excel, or XML.

EMMA (Electronic Municipal Market Access) is the official source for municipal securities data, but its website is not designed for bulk extraction. This actor reads the public bond listings directly, filtered by state, issuer name, and coupon rate range, and returns each bond as a structured row. No login or API key needed.

Who uses it What they scrape EMMA for
Fixed-income analysts Track bond offerings and yields across states for portfolio analysis.
Municipal finance researchers Study issuance patterns and credit ratings in specific regions.
Investment advisors Identify bonds matching client criteria like coupon rate or issuer.
Data journalists Analyze municipal debt trends and transparency.

What it does

This Actor collects municipal bond securities from EMMA by state, with optional filters for issuer name and coupon rate, and returns each bond as a flat row.

  • πŸ—ΊοΈ State-specific scraping: Enter a two-letter state code (e.g., CA, NY, TX) to get all bonds issued in that state.
  • πŸ” Issuer name filter: Narrow results to a specific issuer (partial match supported).
  • πŸ“Š Coupon rate range: Set minimum and maximum coupon rates to focus on bonds within your yield preferences.
  • πŸ“ˆ Scalable output: Collect up to 1 million bonds per run, with automatic pagination.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with EMMA data

πŸ“ˆ Monitor state-level bond issuance.

A fixed-income analyst runs the scraper weekly for California bonds to track new offerings and yield changes.

πŸ” Research specific issuers.

A municipal finance researcher filters by issuer name to study the debt profile of a particular city or school district.

πŸ“Š Build a bond screener.

An investment advisor sets coupon rate ranges to find bonds that match client income requirements.

πŸ“° Investigate municipal debt trends.

A data journalist scrapes all bonds from multiple states to compare credit ratings and principal amounts.

Why choose this scraper

What you get
Official source Data comes from EMMA, the SEC-designated repository for municipal securities.
No API key No registration or authentication needed to start scraping.
Flexible filters Filter by state, issuer name, and coupon rate to target specific bonds.
Structured output Each bond is a flat row with issuer, coupon, maturity, yield, principal, and rating.

How it compares

This actor is the only dedicated EMMA municipal bonds scraper on Apify, offering direct access to official SEC-designated data without an API key.

Feature ParseForge EMMA Municipal Bonds Scraper
State filter Yes Yes
Issuer name filter Yes Not listed
Coupon rate range filter Yes Not listed
No API key required Yes Yes
Up to 1 million bonds per run Yes Not listed

Configure the run

Drive the Actor from a required state code, and optionally filter by issuer name and coupon rate range. Filters apply as each bond is read, so only matching bonds reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
  "state": "CA",
  "maxItems": 10
}

A larger pull:

{
  "state": "CA",
  "maxItems": 200
}

Pricing

Pay-per-result: $0.02266 per result collected. You pay only for the results written to your dataset.

Results collected Approximate cost
100 results $2.27
1,000 results $22.66
10,000 results $226.60

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the EMMA Municipal Bonds Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to EMMA through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/emma-municipal-bonds-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Ensure the state code is valid and two letters (e.g., 'CA'). If using filters, try broadening them (e.g., remove issuer name or widen coupon range).

The scraper returns fewer bonds than expected.

Check if your filters are too restrictive. Increase the 'Maximum bonds' setting if you want more results.

Can I scrape bonds from all states at once?

No, each run is limited to one state. You can schedule multiple runs for different states.

The output shows missing fields for some bonds.

Some bonds may not have all fields available on EMMA. The scraper returns what is publicly listed.

FAQ

Question Answer
What data does this scraper return? It returns issuer name, coupon rate, maturity date, offering yield, principal amount, and credit rating for each municipal bond.
Do I need an API key or login? No. The scraper reads public EMMA pages without any authentication.
Can I scrape bonds from multiple states in one run? No, each run targets one state. You can run multiple jobs for different states.
What is the maximum number of bonds I can collect? Up to 1 million bonds per run, controlled by the 'Maximum bonds' setting.
How does the issuer name filter work? It performs a partial match, so entering 'Los Angeles' will match issuers containing that phrase.
What coupon rate format should I use? Enter a number like 3.5 for 3.5%. The filter is inclusive of the boundaries.
Can I export the data to Excel? Yes, the dataset can be exported to CSV, JSON, Excel, or XML from the Apify interface.
Is the data updated in real time? The scraper fetches the latest available data from EMMA at the time of the run.

Related actors

Browse the full ParseForge collection for more scrapers.

πŸ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Electronic Municipal Market Access (EMMA). It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

Input

FieldTypeWhat it doesDefault
state required string Two-letter state code (e.g., 'CA', 'NY', 'TX'). Required field. CA
maxItems integer How many bonds to collect per run. 10
issuerName string Optional filter by issuer name (partial match). Leave empty for all issuers in the state. not set
minCouponRate number Optional minimum coupon rate percentage (e.g., 3.5) not set
maxCouponRate number Optional maximum coupon rate percentage (e.g., 7.0) not set

Pricing

from $16.99 per 1,000 results

Charged forWhat it isPrice each
Actor Start Charged once when the run starts. $0.005
Result Item Charged once per result collected. $0.01699 to $0.02266

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST Β· run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~emma-municipal-bonds-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

Rated 5.0 out of 5 across 1 review. Read them on Apify.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run EMMA Municipal Bonds Scraper on Apify All scrapers