Build the account list
Company search that writes rows into a real table
A company search is worth little when the output is a download. Here the result set is a table you keep: filters are recorded, each row names the source that found it, and the next pass runs on the same table.
Every company search starts as a guess. You name a size band, a geography, and an industry, look at the first page, and realize the filter you actually wanted is not one the search box offers. What makes a search tool useful is how cheaply you can be wrong twice.
Planning a query costs nothing here and calls no provider. You see which lanes, or data sources, could answer it and what a live run would draw. Only then does the run write rows into a table you named. Those rows are typed, collapsed on the company domain, and stamped with the search that produced them.
Example searches
Ask for it the way you'd say it
Each example is a request in plain words, with what it returns underneath.
Firmographic first pass
software companies in Germany and the Netherlands with 20 to 200 employees that have raised a round
The plan step names which lanes can serve those filters before a paid call is made.
Companies by what they run
show me companies whose job posts mention kubernetes and who sell into large enterprises
Job-post text is a sharper stack filter than a category tag, because a human wrote it last month.
A segment no industry tag carries
find companies that run paid onboarding for their own customers, whatever they call it on their site
A description-shaped lane reaches segments a category filter cannot express. Check rows with an AI column first, since a semantic match can be loose.
Plays
Three motions you can run this week
Each one is a chain of OXYGEN primitives: the same hosted objects your workspace already has, composed.
Plan the query, then pay for it
A segment is checked on filters and expected shape before a single provider call is billed.
- 1Resolve the stored ICP so the filters start from your own definition instead of a blank form.
- 2Plan the search, read the lanes and the estimate, then run it into a table you name.
oxygen companies search planOne segment asked of several lanes
Coverage improves because the same filters are put to more than one kind of source.
- 1Run the firmographic lane, then a hiring lane and a description lane across the same filters.
- 2Collapse on domain, keep the union, and promote only the accounts you intend to work.
oxygen tables dedupeKeep the segment alive
Companies newly hiring for the roles in your definition arrive each cycle instead of in a quarterly rebuild.
- 1Bind a hiring search to the table as a feed with a per-cycle ceiling; each cycle asks only for posts since the last one.
- 2A firmographic search is a fixed list: its feed pages through once and stops. Re-run it for fresh rows; changed cells keep the earlier value in recent history.
oxygen feeds bind
Capabilities
What you get
A plan step that costs nothing
Planning resolves your filters against the available lanes and returns an estimate. Nothing is called and nothing is drawn, so you can iterate freely.
Rows with a source on them
Every row records the lane that produced it and when. When a second source overwrites a value, the cell's recent history keeps the old one and its run, so a disagreement can be traced.
Deduplication you control
A rerun matches companies by domain, so it updates rows you already hold instead of adding copies. Another match column is a standing dedupe rule on the table; a later cleanup is one command.
Filters past the category tag
Headcount, funding, and location are the easy part. Hiring text, detected technology, and how a company describes itself are where a segment gets specific.
Boundaries
What Tables does not own
Company search is Tables doing the work of building a set. The canonical company object, its lifecycle, and its activity timeline belong to Records, and a sourced row becomes truth only when you promote it. Nothing here sends anything; that is Sequences.
Data sources
Data sources and CRM connections
TheirStackJob-post and technology search, the head lane when you filter companies by the tools they run and a fallback for hiring.
Blitz APIThe default firmographic lane: size, industry, and geography filters run here first, and hiring searches start here too.
ExaSemantic company search for a segment you can describe but not filter, which is most of the interesting ones.
CrustdataOn your own Crustdata key, called by name and never routed by default. Run its autocomplete first to find the filter value Crustdata accepts.
Use managed credits where available, or connect a supported provider key on an eligible paid plan. Your provider bills its calls; OXYGEN adds a per-call platform fee. Signed-in CRM connections such as HubSpot have no per-call fee. Connected sending accounts reserve monthly credits. See pricing and supported integrations.
Limits
Where this stops
- Sources disagree about headcount and category more often than anyone admits. Treat one field as an estimate and let a second lane settle the rows where it changes a decision.
FAQ
Questions people ask first
Does planning a search cost credits?
What happens when I rerun the same search?
Can I search by technology or by hiring?
How do these rows reach my CRM?
Why do two sources describe one company differently?
Is there a ceiling on how many companies a table holds?
Try Tables in your own workspace
Sign up, get a working workspace with a one-time credit grant, and run the first play from the web app, the CLI, or your AI assistant over MCP.