Skip to content
CranSEO
CranSEOGet $100 free

Domain trust checker for a 2,000-row data frame

Try one domain in the box, then score a whole column in a single call. The threshold table is ours to suggest and yours to change.

CranSEO research team ·

Check one domain first

Free, no key. Enter a domain and see its DR and referring-domain count before you script anything.

The whole column in one request

Send up to 2,000 domains to bulk_dr, which costs 1 credit per call. We join with a comma-separated string here; run a three-domain test call first to confirm the output shape.

r
library(httr2)
library(dplyr)

domains <- readr::read_csv("links_export.csv")$domain |> unique()
chunk <- head(domains, 2000)

scores <- request("https://cranseo.com/api.php") |>
  req_url_query(action = "bulk_dr",
                domains = paste(chunk, collapse = ","),
                key = Sys.getenv("CRANSEO_KEY")) |>
  req_perform() |>
  resp_body_json()

glimpse(scores)

Threshold table: what a DR band tends to mean

Rules of thumb on a log scale. Edit them to fit your niche.
DR bandLabelWhat to do with the row
0 to 9ThinKeep for volume counts, ignore for quality arguments
10 to 29SmallTypical for new or local sites; inspect the anchor
30 to 59EstablishedUsually worth a manual look in a client report
60 to 79StrongCite by name, and check for topical fit
80 to 100Very largeRare; confirm the link is editorial, not a profile or comment

Why the log scale changes your thresholds

DR rises with the logarithm of referring domains. The step from 10 to 20 takes far fewer new linking sites than the step from 70 to 80.

So bands should not be equal widths in your head. A site at DR 45 is not halfway between a local blog and the New York Times, and a histogram of raw values will mislead you.

Use cut() with the table above, then count rows per band rather than averaging DR. Averages on a log scale hide exactly the outliers you were hired to find.

Three ways to use the labels

Pick one use and stick to it.

Three uses. Filter: keep only rows at DR 30 and above before a manual review, and you cut a 2,000-row list down to something a person can read in an afternoon. Rank: sort descending and take the top 50 as the examples for a client slide. Audit: count rows per band and compare this month with last month, using the dated files from the runbook.

None of these measure quality. Not alone. A DR 70 site can link to you from a sponsored page, and a DR 12 local blog can be the most relevant mention you have. Treat the number as a sorting aid and look at the anchor before you decide, which the action glossary explains how to pull.

If your list started life as a Search Console export, the join walk-through shows the cleaning steps that stop keys from missing, and the pricing page shows what a thousand such calls would cost.

A note on sample size

Small samples lie. Sorry, but they do, and the effect is stronger when you split by band.

Mind the count. With only 40 domains, one outlier moves a band count by a visible margin. Score the whole export, not a convenience sample, since a call for up to 2,000 domains costs the same 1 credit as a call for two. The cheapest way to get a stable picture is to ask for everything and let cut() do the sorting afterwards.

Before you trust the output

  • Deduplicate domains and strip www before the call, every time
  • Log the credits field of the response
  • Store the snapshot date next to the scores
  • Keep the threshold table in version control
  • Say in the report that DR is our own metric, not Moz DA