Create Company Followers signal
Get the people who follow a company page — a warm audience that has already raised its hand for that company's content.
Input: linkedinCompanyUrls (the pages to extract from), plus targetPersonas and the firmographic filters to keep only the followers matching your ICP. targetCompanies narrows further to followers who currently work at one of the companies you name (LinkedIn company URLs, up to 50) — use it to watch a page's audience for your own target accounts only.
Output: person-level leads — name, title, LinkedIn URL, company.
⚠️ In icp mode (the default) this signal is quote-based and does not start on its own. It can be active and still deliver nothing: extraction begins only once the follower volume has been priced and the quote accepted. Until then its responses carry a QUOTE_REQUIRED warning. Three ways to start it:
- call POST /api/v1/signals/{signal_id}/extraction/quote (free), read creditsQuoted, then POST .../extraction/accept (holds the quoted credits; you are charged for the leads delivered);
- or create it with config.autoQuote: true and a config.maxCredits budget: the quote is requested as soon as the signal is active and accepted for you when it costs no more than maxCredits — above that, it waits for your accept;
- or accept the quote in the dashboard.
Follow the extraction with GET /api/v1/signals/{signal_id}/extraction. In count mode (extractionMode: "count", extractionLimit followers, unfiltered) there is no quote: activating the signal starts the extraction. extractionLimit must be at least 100: a lower value is refused with 422 and error.code EXTRACTION_LIMIT_TOO_LOW, on create and on a PATCH that sets it.
Company pages are checked. A linkedinCompanyUrls entry that does not exist on LinkedIn is refused with 422 and error.code COMPANY_PAGE_UNAVAILABLE (error.companyUrls lists the pages), on create and on a PATCH that adds it — nothing is created or charged. A page we cannot verify at that moment is accepted with a COMPANY_PAGE_UNVERIFIED warning; if it turns out not to exist, its extraction stops without using credits and the signal carries a COMPANY_PAGE_UNAVAILABLE warning.
Use cases:
- Competitor audience — the people following a rival already care about the category.
- Event and community follow-up — reach an audience that opted into a page.
- ICP validation — who actually follows a company tells you who buys from it.
Request
- Base URL: https://api.rodz.io (the document declares no server; this is the origin it was published from)
- URL: https://api.rodz.io/api/v1/signals/company-followers
- Auth: HTTP bearer
Request body
Example request
{
"config": {
"getEmails": true,
"linkedinCompanyUrls": [
"https://www.linkedin.com/company/lemlist"
],
"locations": [
"France"
],
"targetPersonas": [
"HR Director"
]
},
"dailyLeadLimit": 50,
"name": "Followers of a competitor page (FR, HR personas)",
"status": "draft",
"webhookUrl": "https://your-server.com/webhooks/rodz"
}Response
Signal created
Example response
{
"applied": {
"allowUnknownCompanySize": false,
"maxJobAgeDays": 180
},
"config": {
"companySizeFilters": [
"201-500",
"501-1000"
],
"getEmails": true,
"jobTitles": [
"CTO"
],
"locations": [
"France"
],
"maxJobAgeDays": 90
},
"createdAt": "2026-01-15T10:30:00Z",
"dailyLeadLimit": 50,
"duplicateHandling": "refuse",
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"lastLeadAt": "2026-03-15T14:22:00Z",
"leadsToday": 3,
"leadsTotal": 127,
"name": "CTOs changing jobs in France",
"signalTypeId": "job_changes",
"status": "active",
"updatedAt": "2026-03-16T08:00:00Z",
"warnings": [
{
"code": "VALUE_BELOW_MINIMUM",
"field": "maxJobAgeDays",
"message": "`maxJobAgeDays` is 90; this signal applies 180. Job changes are delivered up to 180 days after the start date, and a shorter window is raised to that minimum.",
"severity": "info",
"values": [
"90"
]
}
],
"webhookUrl": "https://your-server.com/webhooks/rodz"
}Changes
No recorded changes to this operation across all 1 revision of this API.