Backlink exchanges get a bad rap, but used with discernment they're still viable. The trick is you can't just swap links with any random site-it has to be genuinely relevant and local if you're doing local SEO. I've had success pairing a "resources" page on a complementary business's site (e.g., a plumber linking to a trusted electrician) where the context is natural. No footer spam, no "partners" nonsense.
For gap analysis outreach, I scrape competitors' backlink profiles using a simple Python script that pulls domains from Ahrefs or Majestic, filters for .gov, .edu, or local chamber pages, then cross-references with my own. Here's the rough logic:
import pandas as pd
competitor_links = pd.read_csv('competitor_backlinks.csv')
my_links = pd.read_csv('my_backlinks.csv')
gap = competitor_links[~competitor_links['target_url'].isin(my_links['target_url'])]
# Basic filter for .gov/.edu/chamber
gap = gap[gap['domain'].str.contains(r'\.gov|\.edu|chamber', case=False)]
gap.to_csv('outreach_targets.csv')
Then the outreach email needs to offer something valuable-usually a free audit or a data point they're missing. No mass templates. Each one gets a custom line referencing their site. Takes time, but the links stick.