Finding Boulder link targets with DataForSEO
Private deliverable. Enter the hub password to continue.
That's not right. Try again.
Finding Boulder link targets with DataForSEO
Built and run August 2, 2026. Script: scripts/boulder_link_targets.py.
Full output: research/boulder-link-targets-ranked.csv (311 domains).
Total API spend for the run: $0.81.
The trap in the question
"Find the Boulder websites with the highest domain authority" is a query that returns
a useless list. Sorted purely by authority, the top of Boulder is colorado.edu,
nist.gov, noaa.gov, bouldercolorado.gov and dailycamera.com. Enormous scores,
and with one exception none of them will ever link to a med spa.
There's a second trap underneath it, and I walked straight into it on the first run. If you mine the backlink profiles of real Boulder businesses and sort those by authority, you get this:
bit.ly, w3.org, yahoo.com, squarespace.com, constantcontact.com, outlook.com
Those are URL shorteners, footer boilerplate, and SaaS the business happens to pay for. Every backlink profile is full of them, they all carry enormous Domain Rank, and sorting by rank floats them to the top every time. Authority is a filter, never a sort order.
The list you actually want answers a different question: which locally relevant domains have already demonstrated they will link to a Boulder business?
The method
Two discovery legs, then score, then classify.
Leg 1, SERP discovery. Fifteen queries chosen because the pages that rank for them
are pages that list local businesses: "best of Boulder awards", "Boulder chamber of
commerce members", "Boulder nonprofit corporate sponsors", "Boulder events calendar
sponsors", "Boulder small business spotlight", and so on. Run through
/serp/google/organic/live/advanced at depth 50, location-set to Boulder. That produced
257 domains for $0.09.
Leg 2, backlink mining. This is the higher-signal leg. Find real Boulder businesses
across five verticals (med spa, dentist, law firm, restaurant, home remodeling), then pull
each one's referring domains via /backlinks/referring_domains/live. A domain that already
links to a Boulder dentist is proven to link to a local business, which is the only proof
that matters. Sixteen seed businesses produced 1,718 referring domains for $0.47.
Scoring. Every unique domain goes through /backlinks/bulk_ranks/live and
/backlinks/bulk_referring_domains/live. Both take up to 1,000 targets per call, so
scoring 1,936 domains cost $0.24. This is the cheap part, which is why it pays to be
generous with the candidate list and strict with the filter.
Classification. Drop .gov, .edu, .mil. Drop a blocklist of infrastructure and
SaaS. Keep only domains that are either locally named or ranked for a Boulder-scoped
query. Then tier what's left by whether it links out to local businesses.
That takes 1,936 raw domains down to 311 real ones.
Tier A: proven, and locally visible
These both rank for Boulder queries and already link to businesses in the seed set. This is the pitch list. The last column is out of 16 seed businesses, so 4 means this domain links to a quarter of a random sample of Boulder businesses, which is a lot.
| Domain | Rank | Ref domains | Seeds linked |
|---|---|---|---|
| denverpost.com | 527 | 133,054 | 4 |
| westword.com | 493 | 36,383 | 4 |
| coloradosun.com | 484 | 19,898 | 1 |
| dailycamera.com | 475 | 21,304 | 3 |
| denver7.com | 453 | 22,384 | 1 |
| denvergazette.com | 436 | 11,566 | 2 |
| aboutboulder.com | 435 | 1,098 | 4 |
| timescall.com | 422 | 7,276 | 1 |
| 5280.com | 420 | 16,296 | 4 |
| colorado.com | 420 | 16,640 | 4 |
| citylifestyle.com | 381 | 8,083 | 2 |
| boulderchamber.com | 377 | 723 | 4 |
| uncovercolorado.com | 365 | 15,392 | 2 |
| bouldercountyarts.org | 340 | 524 | 1 |
| boulderweekly.com | 334 | 5,058 | 3 |
| bouldercoloradousa.com | 324 | 3,009 | 1 |
| yellowscene.com | 317 | 1,292 | 1 |
| boulderstartupweek.com | 312 | 276 | 1 |
| longmontleader.com | 299 | 3,709 | 5 |
aboutboulder.com and boulderchamber.com are the standouts. Both link to four of
sixteen seed businesses on modest referring-domain counts, which means they link out
readily and a pitch has a real chance. longmontleader.com links to five, the most of
any domain in the set.
Tier B: small, local, and links to several businesses
Low rank, high relevance. These are the community sponsorship and local-events targets, and they're cheap or free to get into.
| Domain | Rank | Ref domains | Seeds linked |
|---|---|---|---|
| mountainaireboulder.com | 206 | 81 | 2 |
| denverinsider.org | 164 | 378 | 3 |
| boulderpleinairfest.com | 105 | 42 | 2 |
| bouldercounty365.com | 85 | 34 | 2 |
| popgalleryboulder.com | 48 | 39 | 2 |
| openstudiosboulder.org | 0 | 36 | 2 |
| boulderbeat.com | 0 | 36 | 2 |
Do not skip these because the rank is low. boulderbeat.com scores 0 and is a real,
actively read Boulder news site. Domain Rank lags badly on young sites, and a link from a
genuine local publication is worth more to AI visibility than its rank suggests, because
AI can't see Domain Rank at all. It sees whether a real local publication mentions you.
Tier C: local lists and media, no outbound link proven yet
Thirty domains that rank for Boulder queries but weren't found linking to a seed business. Worth pitching, lower confidence. The genuinely useful ones here are bizwest.com (379), boulderdowntown.com (335), bouldereconomiccouncil.org (300) and business.boulderchamber.com (321).
Ignore greatnonprofits.org, taxexemptworld.com, causeiq.com and
doublethedonation.com. They're national nonprofit databases that surfaced from the
"nonprofit sponsors" query, and they're not link targets for a commercial business. The
filter can't tell the difference; a human can, in about five seconds.
Two API gotchas that cost real time
Both worth knowing before you build anything else on DataForSEO.
- The live SERP endpoint accepts exactly one task per POST. Send an array of five and
it returns
40000 You can set only one task at a timefor tasks two through five, but the first one succeeds and the response looks healthy. My first run silently lost 12 of 15 queries and reported a plausible-looking 83 domains. Loop, don't batch. /backlinks/referring_domains/liverejects afilterskey with40501 Invalid Field: 'filters'. It returns a task error, not an exception, so the whole leg came back empty and the script cheerfully printed "0 referring domains". Filter client-side.
The pattern in both: DataForSEO reports failures inside the response body with a 200 at the
HTTP layer. Always check status_code per task.
Rerunning it
py -3.13 scripts/boulder_link_targets.py --dry-run
Full run is about $0.81 and roughly ten minutes. It's city-agnostic:
py -3.13 scripts/boulder_link_targets.py --city "Fort Collins,Colorado,United States" --city-short "Fort Collins Colorado"
Widen the seed set by editing SEED_VERTICALS. More seeds means more proven linkers, and
the marginal cost is about $0.03 per seed, so going from 16 to 50 seeds costs roughly a
dollar and materially improves Tier A and B.
What I'd do with this
Tier A and B together are 47 domains, which is a quarter's worth of outreach for one person. Given the 74,000-email A/B test in the AI-and-links research, write these by hand. The list is small enough that hand-writing is affordable, and that's exactly the situation where the human-written reply rate advantage pays.
The chamber, the arts council, Open Studios, Startup Week and Plein Air Fest are sponsorship and membership plays rather than pitches, which means they're purchasable, renewable, and hard for a competitor to dislodge once you're listed.
Published to Annette's hub. Rebuilt from the source markdown, so edit the source and rerun rather than editing this page.