The Broadcastify Calls Client API lets approved applications read live and archived calls from Broadcastify Calls, look up the systems, talkgroups, conventional channels, nodes, and source IDs that produced them, and create and manage Calls playlists on behalf of authenticated users. It is one of the Broadcastify developer APIs (Live Audio Feed Catalog, Calls, Calls Ingest / Upload, and Feed Owner), all managed through the Broadcastify Developer Program at bcfy.io/dev.
Broadcastify Calls is a high-capacity service that ingests individual radio calls from conventional and trunked systems. It takes in over 5 million new calls every day (about 2 billion a year) from more than 1,000 volunteer capture nodes across 1,083 trunked and conventional systems, and holds a live archive of 1.5 billion calls and 22+ TB of audio at any given time, with a full year of retention configured on every system. Real-time node voting deduplicates roughly 8 million daily upload events into about 5.5 million unique calls, so consumers get one clean copy of each transmission.
The audio is captured and uploaded by volunteer-operated Calls nodes via the Broadcastify Calls Ingest / Upload API; the Client API is the consumer side, for applications that work with those calls.
We are incredibly developer-friendly. Broadcastify has been built on top of a developer ecosystem since day one, and we want third-party applications that genuinely extend what listeners can do with Calls to thrive.
Getting access
Access to the Calls API is now self-serve. Sign in to the developer portal at bcfy.io/dev/apply/ with your RadioReference.com / Broadcastify.com account and submit an application. Don't have an account yet? Create a free one at Broadcastify.com first, then sign in. Every application is reviewed before access is granted. Tell us what you're building, and once approved you complete setup and start using your key entirely in the portal.
Calls API access is metered, prepaid pay-as-you-go. You add credit to your account (minimum $5), and you're billed per record you read, with a monthly spend cap you control. You access the API with your own developer key and are billed for what you read. There is no requirement that your individual users hold separate Broadcastify subscriptions.
- Apply: bcfy.io/dev/apply/
- Pricing: bcfy.io/dev/pricing/
- API documentation: bcfy.io/dev/docs/
- Program Terms: bcfy.io/dev/terms/
Looking for live audio feeds rather than recorded calls? See the Live Audio Feed Catalog API, a separate product in the same Developer Program.
Scope: Calls Client only
This API covers the consumer side of Broadcastify Calls. It does not upload calls (see the Calls Ingest / Upload API), does not stream live audio feeds (see the Live Audio Feed Catalog API), and does not administer feeds or nodes on behalf of their owners (see the Feed Owner API).
Capabilities
At a high level, the Client API supports:
- Live calls: stream the most recent calls for an entity over time
- Group and county discovery: list all groups captured in a county, retrieve details for a single group
- Node, source, and call lookups: retrieve metadata for the capturing node, the source unit ID on the originating system, and any individual call
- Group archives: retrieve all calls for a group within a time range
- Playlists: list, create, edit, and delete playlists owned by the authenticated user; add and remove groups from those playlists; list public playlists by county
Full endpoint reference, authentication flow, parameters, response schemas, and rate limits are documented at bcfy.io/dev/docs/.
Entity model
The Client API uses a small set of consistent identifiers. These conventions also apply to the Ingest / Upload API.
| Entity | Identifier | Description |
|---|---|---|
| Call |
groupId + ts
|
A single radio transmission captured as an MP3 or MP4 audio file. Identified by the Group ID it occurred on and the Unix timestamp it started. |
| Node | nodeId |
The capturing endpoint operated by a volunteer. A node is either a trunked-system node or a conventional-channel node. See https://www.broadcastify.com/apply/calls for hosting one. |
| Group (trunked) | {sid}-{talkgroup} |
A talkgroup on a trunked system. sid is the trunked-system unique ID in the RadioReference database; talkgroup is the decimal talkgroup ID. Example: 2-3416 is talkgroup 3416 on the Greater Austin/Travis Regional Radio System (sid 2). |
| Group (conventional) | c-{fid} |
An individual radio frequency. fid is the conventional frequency's unique ID in the RadioReference database. Example: c-223312. |
| Source | {sid}-{rid} |
A unique source unit on a trunked system. Typically only available for trunked-system calls. Example: 7017-6040271. |
| Tag | tagId |
A service tag assigned to a group, indicating the kind of content it carries. See Service Tags. |
| Playlist | uuid |
A user-defined collection of groups (trunked or conventional, up to 30 entries) for listening. Public playlists are attached to a county for discovery. |
| System | sid |
A trunked radio system in the RadioReference database. |
| Site | siteId |
A specific broadcast site of a trunked radio system. A Calls node may capture talkgroups from a particular site. |
What the API is for
The Calls API licenses two broad kinds of use, and you can do either or both:
- Backend / infrastructure use: pull calls and metadata at the application level with your developer key for transcription, AI / LLM pipelines, alerting, analytics, research, and internal dashboards.
- End-user listener applications: build and operate web, mobile, or desktop apps that deliver Broadcastify Calls audio to natural-person listeners. Scanner-style listening apps are permitted, and monetizing your app (subscriptions, ads, in-app purchases) is fine.
In both cases you are the licensed operator and are billed for the records you read. The end users you serve must be your own: people with an account, login, or comparable relationship established with and managed by you (Terms §4.D).
Coverage, scope, and approval for public apps
On-demand Calls access is intended for applications built around a defined local subject or market: a single agency, department, city, county, or metropolitan area (even one spanning several counties, as long as it stays scoped to that market).
It does not authorize generalized, broadly-distributed consumer applications that give the general public access to Broadcastify Calls across a state, multiple regions, the nation, or the catalog at large, such as a “Texas Scanners” or nationwide “all scanners” product. A broad-coverage application of that kind requires an enterprise license under the royalty model, not on-demand access. The test is the breadth of coverage you offer the public, not a county count.
App-store-distributed mobile applications (Apple App Store, Google Play, and equivalents) that front-end Broadcastify Calls receive particular scrutiny and require our prior approval of their scope, regardless of how narrowly they appear to be scoped. If you are unsure which model your application needs, ask us before launch. Whether a given application qualifies for on-demand or requires an enterprise/royalty license rests with Broadcastify in its sole discretion (Terms §4.C).
What's not allowed
Across all uses, the boundary is simple: serve your own end users; don't become a redistribution layer. The following are prohibited and, if confirmed, may result in immediate termination (Terms §4.C and §4.D):
- Reselling raw API access (wholesale, retail, white-label, or under a different brand), or sharing your API keys outside your company.
- B2B resale, sublicensing, or syndication of Broadcastify Calls content or access to any party that is not an end-user listener of your own application. Aggregators, second-tier API providers, and content-resale businesses are prohibited intermediaries.
- Programmatic re-export: exposing an API, webhook, feed, or bulk-export that lets third parties retrieve Calls audio or metadata without each retrieval being initiated by an authenticated end-user listener of your own application. Audio delivered to a listening human via your player: yes. Data flowing programmatically to another system: no.
- SDKs, embeds, starter kits, multi-tenant SaaS, and reseller / affiliate / channel-partner arrangements that let third parties, or another company's end users, reach Broadcastify Calls through your access. Your end users must be your own.
- Circumventing metering, archive caps, rate limits, or other usage controls.
AI, commercial, and enterprise use
AI and machine-learning use cases are welcome under the Developer Program, and they are a primary use case for the Calls API. Private transcription, AI / LLM projects, research, analytics, alerting, internal dashboards, and back-end infrastructure are all legitimate, supported uses. Apply through the portal, accept the Terms, add credit, and you're billed for what you use.
The standard path is self-serve and metered, so you don't need to talk to anyone to get started. An enterprise license under the royalty model is the path for generalized, broadly-distributed public applications (statewide, regional, national, or “all scanners” surfaces), and for anyone needing custom terms, very high volumes, a flat-rate arrangement, or a negotiated rate. Note it in your application or write to support@broadcastify.com. Partner and node-provider arrangements may qualify for discounted pricing.
Applying: be specific
The portal application asks you to describe what you're building. The more specific you are, the faster we can approve. Helpful detail includes:
- Exactly what the application does, who its users are, and how each user reaches it
- The geographic or subject coverage you offer users: a single agency, city, county, or metro area, versus a state, region, or nationwide scope
- Whether it is distributed through an app store (Apple App Store, Google Play, etc.)
- What Calls data the application needs (live, archive, specific systems or counties)
- Whether it integrates with a radio, scanner, scanner programmer, or other radio-related hardware/software
- For commercial use: company name, projected user count, business model, and your expected volume
- For AI/ML use: training versus inference, dataset retention policy, model distribution, and projected query volume
Applications that boil down to "because I want to," or that read as a pasted LLM prompt with no specific use case, will be declined, and we'll tell you why and, where appropriate, point you toward a better-scoped request or the enterprise path. We're happy to support developers extending what listeners can do with Broadcastify Calls, and we're open to commercial conversations for everything else. Apply at bcfy.io/dev/apply/; for questions, write to support@broadcastify.com.
Comments
0 comments
Article is closed for comments.