Use cases
Fill in a list of companies.
Turn a spreadsheet of company names into websites, profile links and contact pages by running one search per row.
How it works
- 1Start from your list
Company names, optionally with a city or industry to avoid mix-ups.
- 2Search for what's missing
The official site, a careers page, or a profile on a site you name with site:.
- 3Take the top result
Store the link, and flag rows where the match looks doubtful for a person to check.
Find each company's website
import csv, os, requests
def top_link(query: str) -> str | None:
r = requests.get(
"https://plainserp.com/v1/search",
params={"q": query, "num": 3},
headers={"Authorization": f"Bearer {os.environ['PLAINSERP_KEY']}"},
timeout=30,
)
r.raise_for_status()
hits = r.json()["results"]
return hits[0]["url"] if hits else None
with open("companies.csv") as f:
for row in csv.DictReader(f):
print(row["name"], top_link(f'{row["name"]} official website'))Why it fits
- One search per row keeps the cost of a whole list to a few dollars.
- Asking for only a few results keeps responses small and quick.
- site: searches target one directory or network at a time.
Know before you start
- The top result is a good guess, not a verified match. Check the important ones.
- It returns public pages only. It doesn't find emails or phone numbers for you.
- Follow the privacy and marketing laws that apply to how you use the contacts.
What it costs
Looking up 5,000 companies once
That is 5,000 searches a run at $0.30 per 1,000. Your first 1,000 are free.
$1.50
a run