Podcast guest pitch sheet: each show's published contact inbox from its own website, with the episode you heard, date sent, follow-up and reply
What you get: one Google Sheet for pitching yourself as a podcast guest, with one row per show: the contact inbox the show publishes on its own website, the page it was found on, the show's Instagram, YouTube and X links, the episode you actually listened to, your pitch angle for that show, the date you sent, an automatic follow-up date, the reply, and a Next step column (find inbox / send now / follow up today / wait / booked / closed). A summary tab counts pitches, replies and bookings per week. Formulas are below. The example rows are made up.
The finished sheet
shows tab (example rows are made up)
| Show | Domain | Inbox | Found on | Episode heard | Pitch angle | Sent on | Follow up on | Reply | Next step |
|---|---|---|---|---|---|---|---|---|---|
| Example Founder Talks | examplefoundertalks.com | hello@examplefoundertalks.com | examplefoundertalks.com/contact | Ep 112, pricing a first product | How we priced our first B2B order | 2026-10-12 | 2026-10-22 | follow up today | |
| Sample Retail Podcast | sampleretailpod.in | team@sampleretailpod.in | sampleretailpod.in/about | Ep 48, festive season stock | Running a small store's year-end sale | 2026-10-21 | 2026-10-31 | wait | |
| Demo Marketing Hour | demomarketinghour.co | press@demomarketinghour.co | demomarketinghour.co/guests | Ep 9, cold outreach | Three emails that got replies | 2026-10-05 | 2026-10-15 | booked | booked |
| Test Tech Weekly | testtechweekly.fm | find inbox |
Who this is for
- Founders, consultants and authors who want to be interviewed on shows their buyers already listen to.
- PR freelancers and small agencies who keep one shortlist of shows per client.
- Coaches and experts with one clear topic they can teach in a 30-minute conversation.
The slow part of guest pitching is not the email. It is finding where each show actually wants to hear from guests, then remembering who you wrote to, when, and who to follow up with. This sheet does both and keeps every show in one place.
Step 1: list the shows (tab list)
Columns: A show, B website, D episode heard, E pitch angle. Put the show's own website in B: its guests or contact page if it has one, otherwise its homepage. A page on a podcast app or directory is not the show's website, so look for the site link in the show notes. In C2, turn the websites into domains:
=ARRAYFORMULA(IF(B2:B="",,LOWER(REGEXREPLACE(REGEXREPLACE(TRIM(B2:B),"^(https?://)?(www\.)?",""),"[/?#].*$",""))))
That turns https://www.ExampleFounderTalks.com/guests into examplefoundertalks.com, the same form the scraper writes in its domain field, so it is the key the formulas join on. Fill in D and E only after you have listened to at least one episode: that is the line that gets a reply.
Step 2: get each show's published inbox (tab scrape)
With the contact scraper
Open the Website Contact Scraper: Emails, Phones & WhatsApp on the Apify Store, paste column B into Websites or domains (plain list) and use this input (JSON tab):
{
"urls": ["examplefoundertalks.com/guests", "sampleretailpod.in", "demomarketinghour.co"],
"maxPagesPerSite": 4,
"defaultCountry": "IN",
"checkEmailMx": true,
"includePersonalEmails": false,
"includePersonProfiles": false
}
- Start on the guests page when there is one. The scraper fetches the address you give it first, then the most contact-like links on the same site (contact, about, team and similar). A guest form or inbox that appears only on a "be a guest" page is found only if you start there.
- Give one address per show. Rows are de-duplicated by domain, so a second URL on the same site is not visited again.
- Keep
includePersonalEmailsandincludePersonProfilesoff. With them off, only shared inboxes are returned, such ashello@,contact@,info@,team@,press@,media@,pr@orbookings@. An address with a person's name in it, such ashost.anita@, is dropped and only counted. Inboxes such aspodcast@orguests@are not on the scraper's shared-inbox list, so they are dropped too: if a show's page shows one, copy it by hand. - The scraper also reads the show's social links. Instagram, YouTube and X profiles come out in columns such as
socials/instagram/0/url,socials/youtube/0/urlandsocials/twitter/0/url. - Set
defaultCountryto your own country (IN, GB, US, AE...) so local phone numbers are read correctly. You pay only for pages actually fetched; sites skipped because of robots.txt or their terms are not charged.
When the run finishes, export the dataset as CSV, then in your sheet use File → Import → Upload, "Insert new sheet", and name the tab scrape. Keep the headers. Apify flattens lists into numbered columns such as emails/0/email, emails/0/foundOn and emails/1/email; the formulas find them by header name, so column order does not matter.
Free, without the scraper
Make a scrape tab with the headers domain, status, emails/0/email, emails/0/foundOn, emails/1/email, emails/1/foundOn, emails/2/email, socials/instagram/0/url, socials/youtube/0/url and socials/twitter/0/url. Open each show's guests and contact pages, type what you see, and put ok in status. Slower, but the same formulas work.
Step 3: the shows tab
Show =list!A2, Domain =list!C2, Episode heard =list!D2, Pitch angle =list!E2. Every contact column uses one lookup pattern; change only the header in quotes. Put the first three emails found in hidden helper columns N, O and P:
=IFERROR(INDEX(scrape!$A:$ZZ,
MATCH($B2, INDEX(scrape!$A:$ZZ, 0, MATCH("domain", scrape!$1:$1, 0)), 0),
MATCH("emails/0/email", scrape!$1:$1, 0)), "")
with emails/1/email in O and emails/2/email in P. Then the Inbox in C2 prefers a bookings, press or media inbox, then hello or team, then the first address found:
=IFERROR(INDEX(FILTER({N2,O2,P2}, REGEXMATCH({N2,O2,P2}, "(?i)^(bookings|press|media|pr)[.@-]")), 1),
IFERROR(INDEX(FILTER({N2,O2,P2}, REGEXMATCH({N2,O2,P2}, "(?i)^(hello|team|hi)[.@-]")), 1), N2))
Found on in D2 uses the same lookup with emails/0/foundOn (use emails/1/foundOn or emails/2/foundOn when the Inbox came from O or P), so you can open the page and check the inbox is meant for guest requests or general enquiries. Add Instagram, YouTube and X columns with the socials/…/0/url headers above. If a show says it takes guest requests only through a form, put the form link in Found on and leave Inbox blank with a note.
Step 4: dates, reply and Next step
Type Sent on (G) when you send. Follow up on in H2 is ten days later; change the number to suit:
=IF(G2="", "", G2+10)
Column I Reply: blank, replied, booked, no or not now. Column M Followed up: the date you sent the follow-up. Next step in J2:
=IF(A2="", "", IF(I2="booked", "booked", IF(OR(I2="no", I2="not now"), "closed", IF(I2="replied", "answer them", IF(AND(C2="", D2=""), "find inbox", IF(G2="", "send now", IF(M2<>"", IF(TODAY()-M2>=14, "closed: no reply", "wait"), IF(TODAY()>=H2, "follow up today", "wait"))))))))
One follow-up is enough. After that the row closes by itself, so the list shows only the shows worth your time this week. Sort or filter by Next step each morning.
Step 5: the summary tab
Pitched: =COUNTIF(shows!G:G, "<>")-1 Pitched this week: =COUNTIFS(shows!G:G, ">="&TODAY()-WEEKDAY(TODAY(),2)+1) Replied: =COUNTIF(shows!I:I, "replied")+COUNTIF(shows!I:I, "booked") Booked: =COUNTIF(shows!I:I, "booked") Follow up today: =COUNTIF(shows!J:J, "follow up today")
If many pitches get no reply, rewrite the subject line and the episode line before sending more. A short pitch that names one episode and one useful topic for that show's listeners usually does better than the same note sent everywhere.
What the status values mean
| status | Meaning | What to do |
|---|---|---|
ok | Site read | Use the inbox found, or check Found on if it looks wrong |
blocked-by-robots | The site asks bots not to crawl | Open its guests or contact page yourself |
blocked-by-terms | The site's terms forbid scraping (clause quoted in error) | Same |
blocked-by-tos-list | The "website" is a page on a site such as LinkedIn or Facebook | Find the show's own site in its show notes |
blocked-by-site, rate-limited, failed | HTTP 401/403/429, too many requests, or unreachable | Retry later |
The pitch and the follow-up
Subject: Guest idea for [show]: [topic in six words or fewer] Hello [show] team, I enjoyed episode [number/title], especially [one specific point]. I think your listeners would get value from [topic]: [one sentence on what they will learn, e.g. three steps, one mistake to avoid]. I am [name], [one line on who you are and what you have done that makes you credible on this topic]. A recent example: [link to a talk, article or past interview]. Happy to work around your recording schedule. Thank you, [Name], [website]
Follow-up, same thread, about ten days later: Hello, a short follow-up on my guest idea below about [topic]. Happy to suggest a different angle if that suits the show better. Thank you, [Name]
- Write to the inbox the show publishes for guests or general enquiries, not to addresses you guessed. If the show says it does not take guest pitches, mark the row closed.
- Name one episode and one specific point in every pitch. That is the line that shows it is not a mass mailing.
- Send each pitch yourself, one at a time, from your own address, and stop after one follow-up.
- Keep the sheet to show details and your own notes; share it only with someone helping you pitch.
Check before you send
- The inbox or form is one the show publishes, and Found on confirms the page.
- The show does not say "no guest pitches".
- Episode heard and Pitch angle are filled in for this show.
- Your one-line bio and example link are correct.
- Sent on is filled in, so the follow-up date appears.
Partner programme opening soon
Partner programme opening soon: join the free waitlist. Planned terms are 50% of each referred sale (75% once you have 5+ paying customers), single level, paid through Gumroad only from revenue received.
Sources
- Contact scraper input and output fields (
urls,maxPagesPerSite,defaultCountry,checkEmailMx,includePersonalEmails,includePersonProfiles;domain,status,emailswithtypeandfoundOn,socialsincl. Instagram, YouTube and X; shared-inbox list; de-duplication by domain; blocklist of sites such as LinkedIn and Facebook): Apify Store page (input schema and README)
Related
- Press list sheet for a product launch
- Speculative job application sheet
- Clean a contact CSV into a call sheet
Unadhi Guides are free, independent explainers. We correct errors as soon as we find them: write to mininglife7@gmail.com.