Read monitored LinkedIn follower history

GET/sites/{site_id}/linkedin/competitors/{competitor_id}/followers/historylinkedin:read

Requires linkedin:read and an explicit site grant. Stored reads only: no LinkedIn requests, scraping, refresh jobs, or credit charges. source=live and unknown/repeated query parameters are rejected. Site/company/business-unit boundaries apply regardless of browser login or OAuth state. Use limit/cursor and repeat filters. Ordering is creation time then ID descending; follower history uses recorded_at then ID. Growth is recomputed from the previous authorized LinkedIn count, including before the date filter; cached legacy deltas are ignored.

RequestGET https://satelliteai.io/api/v1/sites/{site_id}/linkedin/competitors/{competitor_id}/followers/history
Permissionlinkedin:read
ResponseA list (cursor or offset paginated): data is array of LinkedInFollowerObservation.
Operation IDlistLinkedInCompetitorFollowerHistory

More context and worked examples are in the developer guide.

Example request

cURL · Bash
curl --fail-with-body \
  'https://satelliteai.io/api/v1/sites/123/linkedin/competitors/456/followers/history' \
  -H "Authorization: Bearer $SATELLITE_API_KEY"

Replace the example IDs with values returned by the discovery endpoints. Example values are placeholders, not real records.

Parameters

NameInTypeDescription
site_idrequiredpathintegerID from GET /sites.
min 1
competitor_idrequiredpathintegerUse post id for post_id, or the monitored profile's competitor_id (not its observation id) for competitor_id. These are Satellite numeric IDs, not LinkedIn URNs.
min 1
limitqueryintegerMaximum rows per page.
default 50 · min 1 · max 100
cursorquerystringOpaque next_cursor from the prior response. Expires after 24 hours; bound to integration, permissions, sites and unchanged filters. Restart pagination if access changes.
max length 4096
start_datequerystring (date)Inclusive YYYY-MM-DD boundary for recorded_at, in UTC.
end_datequerystring (date)Inclusive YYYY-MM-DD boundary for recorded_at, in UTC.

Unknown or repeated query parameters return 400.

Data dictionary

Stored results. Lists can be empty; latest followers can be null with availability not_available. Saved follower total on a UTC date with provenance and estimated reconciliation intervals. Missing dates are omitted; no extrapolation. Not a daily-gains report.

[] marks an array element. nullable means the value can be null; treat it as unknown, not zero. always present means the key is always included in the object.

Fields in data
FieldTypeDescription
data[].idintegeralways presentSatellite identifier for this record.
min 1
data[].site_idintegeralways presentSatellite site ID (from GET /sites).
min 1
data[].org_urnstringnullablealways present
max length 4096
data[].snapshot_datestring (date)nullablealways presentObservation date, not a proven reporting period.
data[].fetched_atstring (date-time)nullablealways presentWhen Satellite fetched the data from its source (UTC, RFC 3339).
data[].created_atstring (date-time)nullablealways presentWhen Satellite created the record (UTC, RFC 3339).
data[].updated_atstring (date-time)nullablealways presentWhen Satellite last updated the record (UTC, RFC 3339).
data[].followers_fetched_atstring (date-time)nullablealways present
data[].total_followersintegernullablealways present
data[].follower_total_sourcestringnullablealways presentobserved: networkSizes response; legacy_snapshot: retained observation with unverified historical fallback; estimated: reconstruction.
max length 64
data[].followers_observed_atstring (date-time)nullablealways present
data[].follower_estimate_methodstringnullablealways present
max length 64
data[].follower_anchor_datestring (date)nullablealways present
data[].follower_net_changeintegernullablealways presentEstimated calendar-period reconciliation; timing and provider corrections can affect this value.
data[].inferred_follower_lossesintegernullablealways presentEstimated calendar-period reconciliation; timing and provider corrections can affect this value.
data[].follower_reconciliation_adjustmentintegernullablealways presentEstimated calendar-period reconciliation; timing and provider corrections can affect this value.
data[].follower_interval_startstring (date)nullablealways present
data[].follower_interval_endstring (date)nullablealways present
data[].follower_interval_gainsintegernullablealways presentEstimated calendar-period reconciliation; timing and provider corrections can affect this value.
data[].followers_estimatedbooleanalways present
data[].losses_sourcestringnullablealways present
max length 64
data[].timezonestringalways present
one of: UTC
data[].truncated_fieldsarray of stringalways presentFields exceeding public text, URL, JSON, or array limits.

Response metadata

Fields in meta
FieldTypeDescription
meta.request_idstringRequest identifier; also returned in X-Request-ID. Include it in support requests.
meta.api_versionstringAPI version that produced the response.
one of: v1
meta.limitintegerMaximum records per page applied to this request.
min 1 · max 100
meta.has_morebooleanTrue when another page is available.
meta.next_cursorstringnullableOpaque cursor for the next page; send as cursor. Null on the last page.
meta.availabilitystringavailable when stored data exists; not_available when it does not.
one of: available, not_available
meta.billingobjectPresent for paid live SERP requests; replayed receipts describe the original debit, not an additional charge.
meta.billing.operationstringalways present
one of: client_api_serp_refresh
meta.billing.credits_chargedintegeralways present
min 0
meta.billing.transaction_idintegeralways present
meta.billing.replayedbooleanalways present
meta.sourcestringalways present
one of: stored
meta.org_urnstringnullable
max length 4096
meta.metric_periodstring
one of: lifetime
meta.observation_historyboolean

Error responses

Errors return {"error": {"code", "message", "request_id"}}. See error handling for retry guidance.

HTTPWhen
400Invalid or repeated query parameter, filter, limit, or cursor.
401Missing, invalid, expired, or revoked credential.
403Required scope, active integration, or company API entitlement is unavailable.
404The resource is missing or outside the granted company/site boundary.
413The response or stored artifact exceeds the configured retrieval limit.
429API request quota exceeded. Retry after the indicated interval.
503A required storage, rate-limit, or artifact dependency is unavailable.