I build Programmable, so this is a post about my own tool. But the pattern is useful on its own: a Google Sheet can call any URL that returns CSV, and that's enough to turn a column of company websites into a researched list without a script, an add-on or a Zap.
The one formula
Say column A has company websites, starting in A2. Put this in B2 and fill it down:
=IMPORTDATA("https://programmable.info/x/live?key=YOUR_KEY&header=0&domains="&ENCODEURL(A2)) Three things are doing the work:
-
IMPORTDATAfetches a URL and spills the CSV it returns across the row. Google runs the request, so there's no Apps Script and nothing to authorize. -
ENCODEURL(A2)keeps odd characters in the domain from breaking the query string. -
header=0drops the column-name row. Without it, every filled-down formula would repeat the headers and you'd get a header row between every company.
Each row comes back with the company name, industry, HQ, headcount, tech stack (CMS, ecommerce platform, analytics), social links, open roles and email setup (SPF, DKIM, DMARC).
Pick only the columns you want
The full row is wide. Add columns= in plain words:
=IMPORTDATA("https://programmable.info/x/live?key=YOUR_KEY&header=0&columns=tech stack, hiring&domains="&ENCODEURL(A2)) You can also ask your own question, and it comes back as a column answered from the company's own pages, with a one-line reason:
https://programmable.info/x/live?domains=stripe.com&ask=Who do they sell to? Two things I'd warn you about
A key in a cell is visible to anyone who can see the sheet. Don't paste your main API key into a shared sheet. Make a share key locked to that link, with a row cap and an AI cap, and use that instead.
Sheets recalculates when it feels like it. IMPORTDATA re-fetches every so often. For a one-off list, copy the results and paste them as values once they're in. If you'd rather call formulas by name, there's an add-on with PROGRAMMABLE_ROW(A2, "company, tech stack, hiring") that caches for six hours so a recalculation doesn't spend credits again.
The same thing from curl
The link is just an HTTP GET, so anything that can make a request can use it. Add format=json for JSON instead of CSV:
curl -G "https://programmable.info/x/live" \ -H "Authorization: Bearer $PROGRAMMABLE_KEY" \ --data-urlencode "domains=stripe.com, atlassian.com" \ --data-urlencode "columns=tech stack, email setup" \ --data-urlencode "format=json" That's also how it plugs into Zapier, n8n or Make: one webhook step with the company's website mapped into domains. There's an MCP server too (https://programmable.info/api/mcp) if you'd rather ask from Claude or Cursor.
What it costs
A row is one credit, plus one for each extra-cost column group (the email finder, leadership, performance and marketplaces). New accounts start with 500 credits included and no card. Rows are built when you ask and aren't stored; only public company facts are cached.
If you try it, I'd like to hear which columns you actually keep. That decides what I build next.

