About Heard.
A free, transparently-built music industry contacts database.
Why this exists
I'm Jesse—an indie musician, just like you. Years ago, I built a modestly successful music career without a label: touring nationally, landing sync placements, and earning some great press along the way. After that, I spent a decade building software at tech startups. Now, more than ten years later, I'm stepping back into music.
Back then, I thought the music industry was often exploitative and unnecessarily difficult to navigate. Returning today, I've found many of those problems have only gotten worse. Rather than complain about it, I've decided to build free tools that help independent musicians succeed.
In music, your network is often your biggest asset. The ability to connect with the right people can open more doors than almost anything else. That's why I'm starting with Heard: a free directory of music industry contacts designed to help artists expand their reach and build meaningful connections.
I'm just one person, and this directory won't be perfect. But with enough people contributing and benefiting from it, I hope it can become something genuinely useful for all of us.
What's in here
- Playlist curators — across the major streaming platforms. Sourced from public profiles + community submissions.
- Music supervisors — film, TV, ad, trailer, game. Sourced from credit databases and industry directories.
- PR & marketing firms — companies that represent musicians, with their public client rosters.
- Press / blogs — music publications, ranked by activity and reach.
Coverage is heaviest in the US and UK. We expand geographically as we add new signals.
How genre tags work
Contact genre tags are derived from rosters, not self-claimed. We look at every artist a contact has placed/repped/featured, pull each artist's genre tags from various music databases, and surface the genres that show up across at least 20% of the roster.
This means an indie-rock booking agent gets tagged indie-rock because their roster IS indie-rock — not because they bought ad space or self-described that way.
Artist tags are crowd-sourced and best-effort. Where we can't match a tag to one of our genre slugs, we skip rather than auto-create junk genres.
How we score contacts
Each contact type gets its own chips, computed from publicly-available data only.
Activity (curators / blogs / communities)
High / Medium / Low / Inactive — strictly tied to whether the contact is doing what they exist to do.
- Curators: are they actually reviewing pitches and running playlists? High = consistent recent activity at meaningful volume. Medium = real but moderate. Low = limited presence. Inactive = no signs of life.
- Blogs: posting cadence over the trailing month. High = near-daily. Medium = a few per week. Low = roughly weekly. Inactive = nothing in the last 90 days.
- Communities: engaged conversation in the last 30 days (real replies, bots discounted). High = multiple per day. Medium = every few days. Low = roughly weekly. Inactive = silent for a week+.
Real audience (curators only)
Bot-farm detection for playlists. Editorial = run by the streaming platform itself. Real audience = healthy follower-to-curation ratio, diverse artists, realistic approval rate. Inflated / Bot-farm = patterns consistent with purchased followers or zero curation effort. Click the chip on any curator card for the specific signals we flagged.
Responsiveness (curators with SubmitHub data)
A–F based on SubmitHub approval rate and review volume. Only the curators with enough SH data get a real grade; the rest show nothing (we don't guess responsiveness from having an email).
Per-type stats we surface
- Blogs: posts/month, last post date, domain authority (when available).
- Curators: indexed playlist followers + track counts; SubmitHub submissions and approvals.
- Communities (Reddit): subscriber count.
- Venues: capacity + age restriction, acts who've played there (from venue calendars).
- Supervisors / PR / Booking agents / Managers / Labels: artist roster + relationship type. No composite score — quality is in the names.
What we don't score
Stream-per-add and save-rate metrics ate gated, as are certain community metrics. We surface what's in public data and label what isn't — "INSUFFICIENT" rather than a guess.
Every fact has a source
Click any field on any contact and you'll see where we got the value and when we last verified it. Every contact card shows a freshness indicator that color-codes how stale the underlying data is — fresh entries are green, ancient entries are red.
We don't fabricate. If we don't know a supervisor's email, the field is empty — not filled with a guess.
Data refresh policy
- Monthly refresh — every contact is re-checked at least monthly.
- Stale-flagging at 90 days — anything not re-verified is visibly flagged.
- Un-publishing at 180 days — Spotify-sourced data hidden from public view.
- Hard deletion at 210 days — permanently purged with cascading cleanup.
- Full purge on exit — if we ever stop using a third-party API, all its data is deleted.
Implemented in code — see `scripts/maintenance/` in our repo.
Crowdsourced quality
On every contact you can flag whether the info worked for you (👍 / 👎 / report bad info / suggest a correction). In v1 this is anonymous — we'll add account-gating if and when abuse becomes a problem. Your feedback is the fastest way the database gets better.
Spotted bad info? Email me at the address in the footer and I'll fix it.
What this is not
- Not a guarantee. Every contact can change overnight. Verify before pitching.
- Not endorsed by anyone listed. Heard is a directory of public information.
- Not exhaustive. We grow with every refresh and with user suggestions.
- Not a pitching service. We don't send anything to anyone on your behalf.
- Not affiliated with Spotify, Apple, IMDb, or any other source. We use public data. We are not partnered with, sponsored by, or endorsed by any of the sites we pull data from.
Privacy
We collect no analytics by default. IPs are hashed (never stored in plaintext) only as a rate-limiting signal on the feedback form. See the privacy page for details.