How it works
Company Watchlist uses three connected concepts: Entities are individual company definitions. Each entity stores identifying information — name, domain, description, alternative names, key persons — that the system uses to recognize the company in web content. Datasets are named collections of entities. A dataset acts as a watchlist or portfolio. You create it once and can reuse it across multiple jobs and monitors. Connected jobs are standard CatchAll jobs submitted with aconnected_dataset_ids parameter. Adding this parameter activates company
search mode; everything else about the job — query, validators, enrichments,
date ranges — works identically to a normal job.
Create entities
Thename field is required. You must also provide at least one of description
or domain (inside additional_attributes.company_attributes).
Matching quality depends on what you provide. domain and description are the most reliable
signals:
- Two companies can share a name, but not a domain.
- Companies might have the same name, but they usually operate in different sectors. That’s why description is the key to a proper disambiguation
Single entity
Writing effective descriptions
Thedescription field is the primary signal used to tell two companies with
the same name apart. A specific, factual description gives the matching model
distinctive features to anchor on — vague, marketing-style text produces false
positives or missed coverage.
The goal is to fingerprint the company, not to sell it. Aim for two to four
sentences covering what the company is and what it offers.
Good description:
Apollo Global Management is a US-based alternative asset management firm headquartered in New York City, founded in 1990 by Leon Black, Marc Rowan, and Josh Harris. It manages private equity, credit, and real assets funds with over $650 billion in assets under management and is publicly traded on the NYSE under the ticker APO.Bad description:
Apollo is a global leader providing innovative solutions to clients across multiple industries worldwide.The bad example fits dozens of companies named Apollo equally well. Consider two real ones: Apollo Global Management (New York City; alternative asset management; founded 1990; NYSE: APO) and Apollo Hospitals (Chennai, India; private hospital chain; founded 1983 by Dr. Prathap C. Reddy; largest private hospital network in Asia). The name alone tells you nothing — what separates them is geography, industry, founders, and products. The same pattern applies to “Delta” (airline vs. faucets vs. dental insurance) and “Dove” (Unilever personal care vs. Mars chocolate). The details that do the disambiguation work are: aliases, specific industry, headquarters location, founding year and founders, and concrete products or services. Generic adjectives (“leading,” “innovative,” “world-class”) carry no disambiguating signal — drop them. A complete description includes:
- Full legal name
- Specific industry or sector — not “technology” but “freight forwarding and customs brokerage”
- Headquarters city and country, plus main regions of operation
- Concrete products, services, and brand names
- Parent company, subsidiaries, ticker, or public/private status when relevant
Attach an external entity ID
Use the optionalexternal_entity_id field to store your own identifier for an
entity — a CRM, data warehouse, or internal database ID. CatchAll stores it as
provided and returns it on entity responses, dataset entity summaries, and
connected entities in job results, so you can join CatchAll output back to your
systems without maintaining a separate mapping.
PATCH /catchAll/entities/{entity_id}.
When no value is set, the field is returned as null.
Batch
Use batch creation when adding multiple entities at once. Each entity is processed independently — one failure does not affect the others.Create a dataset
From entity IDs
Create a dataset from existing entity IDs. All IDs must belong to your organization — any invalid ID returns400.
From CSV
Upload a CSV to create both entities and the dataset in a single request — the fastest path for most use cases. Thename and domain columns are required; all other columns are optional.
Use semicolons to separate multiple values in alternative_names and key_persons.
Rows with an empty name are skipped and reported in validation_report.
Wait for the dataset to be ready
PollGET /catchAll/datasets/{dataset_id}
until latest_status reaches ready. Do not submit a job before this step
completes.
Submit a connected job
Addconnected_dataset_ids to a standard job submission to activate company
search mode:
Only one dataset per job is supported at this time, even though
connected_dataset_ids accepts an array.GET /catchAll/status/{job_id}
until status is completed, then retrieve results. See
Jobs for the polling pattern.
Filter by association type
When a job is connected to a dataset, you can control how strictly entities must relate to each result by settinged_association_type.
When omitted, no association-type filter is applied and all matching records are
returned regardless of how the entity relates to the event.
association_type field
(event_associated or mention) indicating how it relates to that specific
record.
Get all news for a watchlist
To retrieve all news about your tracked companies without filtering by a specific topic, setfetch_all_watchlist_news: true. Use this when you want a
broad news feed for a portfolio or competitor set rather than a targeted event
search.
Wildcard queries (*) and generic phrases like “all news” also trigger this
behavior automatically.
fetch_all_watchlist_news requires connected_dataset_ids to be set.
Sending it without a connected watchlist returns a validation error.Get results
Retrieve results the same way as a normal job. Each record includes aconnected_entities array with one entry per matched company. Entities with
ed_score of 0 are filtered out automatically and never appear.

