Find agencies

Find marketing agencies by service mix, size, and stack

Every marketing agency site says full service. What separates a paid-media shop from a brand studio is the work they show, the headcount behind it, and the tooling on their own domain.

try

Agency sourcing breaks on self-description. A three-person shop with one retainer calls itself full service, and so does a hundred-person network. The cut that matters is what they sell, how many people sell it, and whether their own site shows your category.

Serper's maps search returns the listing with site and location. Blitz API's company profile adds headcount and founding year. LeadMagic scans the agency's own website so their tooling lands on the row, and Blitz API heads the email chain for contacts with a LinkedIn profile, with LeadMagic behind it.

Your CRM changes only when you approve a write from the table. Rows you keep are promoted to company and contact Records with the source of every field attached. The rest stay in the table, where sitting still costs nothing.

Example searches

Ask for it the way you'd say it

Each example is a request in plain words, with what it returns underneath.

  • By service line

    find agencies that describe themselves as paid media or performance marketing across the midwest

    Service language is read off the site once and written to the row, so a brand studio calling itself full service does not quietly pass.

  • Sized for your price point

    only agencies between ten and sixty people, drop the one-person consultancies

    Headcount comes from the company record rather than a guess off the homepage. Rows where it is unknown are flagged, not deleted.

  • Owner, not the shared inbox

    for each agency get the founder or head of growth with a verified work email

    Titles vary wildly at this size, so the table stores the title it actually found beside the address it resolved.

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.

  • Stack-qualified agency shortlist

    A list where every agency already runs the category your product attaches to.

    1. 1Source agencies by service language and region, then dedupe on normalized domain.
    2. 2Scan each agency's website, copy the matches into a table of their own, resolve the owner, and enroll that table.
    oxygen companies search run --source google_maps
  • Partner pitch, not a product pitch

    Agencies already serving your buyer get invited to resell instead of cold-pitched.

    1. 1Filter to agencies whose case studies name the sector you sell into.
    2. 2Copy them into a table of their own, enroll it from warmed mailboxes, and work every reply in one inbox.
    oxygen sequences enroll
  • Refresh the agencies in your CRM

    Agency accounts you already track get a current headcount and a named owner.

    1. 1Import your company Records into a table, filter it to agencies, and bind each row back to its record.
    2. 2Add headcount, owner and work-email columns, run them under a credit ceiling, then promote the changed rows with the overwrite policy.
    oxygen tables promote

Who you can reach

Roles you can find at marketing and growth agencies

Reachability is per channel: a role marked for mobile is one the phone waterfall usually resolves, not a guarantee for every record.

RoleSeniorityReachable by
Agency founder or ownerOwner/FounderWork emailLinkedInMobile
Managing directorC-levelWork emailLinkedIn
Head of growthDirectorWork emailLinkedIn
New business directorDirectorWork emailLinkedIn
Head of operationsVPWork emailLinkedIn
Account directorManagerWork emailLinkedIn

Filters you can search on

  • Service lines named on the site
  • Headcount band
  • City, state, or country
  • Tools found on the agency's own website
  • Client sectors named in case studies
  • Independent or part of a network
  • Year founded

Listing and site data resolve for agencies with a public listing and a domain. The smallest shops often have no company record, so you get a listing and a phone number but no size band. The website scan reads what the agency exposes on its own site, which undercounts anything they run only inside client accounts.

Data sources

Data sources and CRM connections

  • Serper

    Maps listings with site, phone, category, and location, which is where a regional sweep starts.

  • LeadMagic

    Scans the agency's own website for its marketing tools, in a column of its own. It also finds email and mobile for rows the earlier lanes miss, charged only on a hit.

  • People Data Labs

    A pricier company record you can name when Blitz API has no profile for an agency, with headcount, founding year, and size band.

  • Blitz API

    First lane of the work-email chain for rows with a LinkedIn profile. A row it resolves never reaches the pricier lanes behind it.

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

  • An agency website is marketing copy. Service lines and client logos say what they want to sell next year, not what pays the bills today, so rank on them rather than hard-filtering.

FAQ

Questions people ask first

How do I tell a real agency from a solo freelancer?
Headcount is the cleanest split and it comes from the company record, not the homepage. No record often means a very small shop, so work those rows by phone.
Can I filter on what an agency actually sells?
Yes, but store it as a column rather than burying it in a keyword search. The site language is read once and written to the row with its source, so you can change the rule without sourcing again.
What if the only address is a shared inbox?
Add the free email_type formula: it labels shared inboxes, like an info address, as role addresses, so they never mix with a named contact. Rows that resolve only to a shared inbox belong in a phone or LinkedIn step, not an email sequence.
Can two of us work the same agency list?
Yes. A table is a workspace object, not a file on a laptop. A teammate opens the same rows and reads the run history behind each cell. From the CLI or MCP, they can comment on a row before anything is promoted.
Which columns on this build actually cost anything?
Every column that calls a provider or a model is metered. On this build, that is sourcing the rows, the company record, reading the site, the website scan, finding the owner, and the email waterfall. Writing the service-line rule, deduping, splitting views, and writing the sequence yourself are not. Order the free checks first so a metered lane only ever runs on agencies that already passed, and preview every run before it starts.
How do I keep the list from going stale?
A maps search cannot run on a schedule, because repeating it returns the same listings. Run it again yourself for a fresh sweep. A company search that can run on a schedule, such as Blitz API's, can feed the table weekly under a credit cap per cycle. Each week adds the next matches, and the feed stops once the search has none left. Bind it again later to pick up agencies listed since.

Build your marketing and growth agencies list

Start with a search, preview the cost before anything is spent, and keep the rows, sources, and runs in a workspace you own.