Skip to main content
Monitor LinkedIn company pages to track their posts, announcements and activities. Perfect for competitor analysis, partnership monitoring, or industry research.
Platform: LinkedIn only. Company watchlists track LinkedIn company pages; there is no Reddit equivalent. Collection requires your team’s OutX Chrome extension to be installed and active (within the last 48 hours). See Choose a watchlist type.

Request Body

string
Watchlist name. If not provided, a name will be auto-generated.
array
required
Array of LinkedIn company identifiers. The API automatically detects and extracts identifiers from various formats (LinkedIn URLs, company slugs, LinkedIn URNs, or direct URN IDs).
string
Optional description for the watchlist
string
Add the companies to an existing list instead of creating a new one. This is the older add-members path, from before PUT could edit membership. It still works, but to add or remove companies on a watchlist you already have, use add_companies and remove_companies on the update endpoint.
number
default:"12"
Fetch frequency in hours. Allowed values: 1, 3, 6, 12, 24, 48, 72.
string
Optional retry key you choose, up to 128 characters. A second create carrying the same key within about two minutes returns the watchlist the first one made instead of a duplicate. Send one on every create. See Idempotency.

Limits

Both caps run before anything is created, so a rejected create leaves nothing behind. The team allowance is the real ceiling: free 400, growth 1,000, expert 4,000, ultimate 20,000, counting every profile and company on every watchlist you own. Making more watchlists does not raise it. Watchlists themselves are capped separately by plan; check both with GET /api-team.

Supported Company Formats

Full URN format (automatically extracts the unique ID):
Numeric company IDs:

Idempotency

Two guards stop a retry from creating a second watchlist. Both run before the plan-watchlist check, so a retry that matches gets the existing watchlist back rather than a 402. A retry that does not match falls through to a normal create, plan check included, so 402 is still possible: most often when the matched watchlist turned out to be incomplete (see the warning below) and a fresh one has to be built.
  • Your own key (recommended). Send idempotency_key: any string up to 128 characters, unique per logical create. A UUID per create is the simplest choice. A second request with the same key, from the same team, within about two minutes is answered with the watchlist the first one made, whatever else the body says.
  • Without a key, a create is matched against watchlists your team made in the last couple of minutes that agree on the name you chose, the description, the Slack webhook, and the companies themselves. A create that named a list_id matches when that list already holds every company you asked for; a create that did not matches when the list holds exactly those companies and no others.
Either way the answer is 201 with created: false and deduplicated: true. Treat it as success.
Best effort, not atomic. The duplicate lookup and the insert are separate steps, so two genuinely simultaneous identical creates can both go through. Retry one at a time rather than in parallel, and read created on the response instead of assuming. A matched watchlist whose collection tasks never got written is not handed back; a fresh one is built instead.
A key that is not a string, or is longer than 128 characters, is rejected with 400 before anything is created.

Response Fields

string
Unique identifier for the watchlist
string
Watchlist name
string
URL-friendly slug for the watchlist
string
Always “company” for company watchlists
number
What this counts depends on which response you got:
  • On a fresh create (created: true): the company rows this call actually inserted. When you passed a list_id, that is the companies this call added, not the list total.
  • On a deduplicated response (created: false): the number of identifiers you sent in the request, echoed back. It is not the existing watchlist’s company total.
For the real total on an existing watchlist, call GET /api-company-watchlist?id=... and read companies_count there.
number
Fetch frequency in hours
boolean
true when a new watchlist was created, false when an existing watchlist was returned instead. See Idempotency.
boolean
Present and true only when a duplicate guard returned an existing watchlist. Absent on a normal create.
number
On a fresh create, the number of tracking tasks this call queued. On a deduplicated response, the number of tracking tasks the existing watchlist already has, so the field is never absent just because nothing new was created.

Use Cases

Monitor competitor company pages for announcements and updates:
Track potential or existing partners:
Follow companies in your industry vertical:

Frequently Asked Questions

200, on every plan. See Limits above, and note the separate team-wide allowance that caps the total across all your watchlists.
No. The team allowance counts every tracked profile and company on every watchlist you own, so extra watchlists do not raise your total. Upgrade the plan, or drop the pages you no longer follow.
Tracking tasks are created immediately, and tasks_created confirms how many were queued. Company watchlists do not backfill, so the feed fills from the first fetch cycle onward rather than showing history right away.
Send add_companies to PUT /api-company-watchlist. Do not call create again with the same name. Without an idempotency_key, a create is deduped only when the name, description, webhook and the exact company set all match a create from about the last two minutes. A same-name create with a different company set makes a second watchlist.