# Changelog of X Follower Scraper | $0.00015/Profile | Pay-Per-Result (`xquik/x-follower-scraper`) Actor

- **URL**: https://apify.com/xquik/x-follower-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/xquik/x-follower-scraper.md

## Changelog

Every change to this Actor, with its date.

### Latest changes

- 2026-10-05: Runs of under 5 IDs or handles end with a tip to batch them.
- 2026-10-04: An account X suspended now reads "X suspended 1 account." with the
  cause `target_suspended`, instead of a missing target.
- 2026-10-04: `relation: "subscriptions"` returns the creators an account
  subscribes to, as profile rows.
- 2026-10-04: `relation: "affiliates"` returns the accounts an organization
  lists as its affiliates, as profile rows.
- 2026-10-04: The Actor version in diagnostics & run reports is now the Apify
  build number.
- 2026-10-04: A run no longer stops early when an upload's answer is lost. Its
  rows are charged once.

### 1.9.109, 2026-10-04

- `relation: "follower_ids"` returns the user IDs of an account's followers.
- `relation: "following_ids"` returns the user IDs of the accounts it follows.
- Each ID is 1 row at the usual row price, up to 5,000 IDs a page.

### 1.9.108, 2026-10-04

- Every run uses 256 MB again, which is faster & more reliable for small runs.

### 1.9.107, 2026-10-01

- Support now sees how many accounts X refused in a run.
- When Xquik stays busy, each retry waits longer than the last.
- If Xquik stays busy too long, that target fails & the run says why.
- Busy answers are never charged.

### 1.9.106, 2026-09-30

- A run near its time limit stops before a read it can't finish.

### 1.9.105, 2026-09-29

- A run that started late says how long it waited, out of its time limit.

### 1.9.104, 2026-09-29

- Requests to Xquik never follow a redirect, so the key stays with Xquik.

### 1.9.103, 2026-09-29

- A run waits out a brief Xquik outage instead of failing.
- Rows saved before an outage stay saved & are charged once.

### 1.9.102, 2026-09-29

- Merge mode lists each shared profile under its first target in your input.
- Merge mode lists rows in your target order, the same in every run that reads
  every target.
- First mode credits a shared profile to the target that returns it first.
- That target can change between runs. Merge mode lists every target.
- The First target option is now First found.

### 1.9.101, 2026-09-29

- Runs with more than 5 targets, counting each relation, keep 256 MB.
- Author data no longer includes a follow flag that did not describe the author.

### 1.9.100, 2026-09-29

- Runs up to `maxItems` 300 with up to 5 targets use 128 MB & cost less.

### 1.9.99, 2026-09-29

- Full output adds up to 13 profile fields, such as `listedCount` &
  `defaultProfileImage`.
- Full rows keep every earlier column first & add the new fields last.
- Compact & raw output keep their rows unchanged.
- The benchmark shows 2 full runs of 2026-09-29, with 38 fields per row.

### 1.9.98, 2026-09-29

- The README names the Actor as Xquik's X Follower Scraper, opens with the
  benchmark result & explains empty, partial & stopped runs.

### 1.9.97, 2026-09-28

- The benchmark shows fields per row & names Actors by Apify slug.
- Compact rows show `accountBasedInUnavailable: true` when X withheld the
  account location.

### 1.9.96, 2026-09-28

- Runs under 34 results cost less in Apify usage, with no progress saves.

### 1.9.95, 2026-09-28

- An aborted run's status counts its saved results, even during a slow upload.

### 1.9.94, 2026-09-28

- X keeps the follower & following lists of protected accounts private.
- Such a target now gets 1 free diagnostic, & the run reads the others.
- `stopCauses` names it `target_protected`, with `nextAction` to try a public
  account.

### 1.9.93, 2026-09-28

- The README shows a benchmark against 9 follower Actors, with every run public.

### 1.9.92, 2026-09-27

- A profile that several targets share now appears & is charged once.
- Set `dedupeAcrossTargets` to `false` or `dedupeMode` to `none` to keep 1 row
  per target.
- `dedupeAcrossTargets: true` now removes repeats even when `dedupeMode` is
  empty.
- The run status now counts the duplicates it skipped at no charge.

### 1.9.91, 2026-09-27

- During a run, the status shows how many results it has collected so far.
- The status says when the run waits to retry.

### 1.9.90, 2026-09-27

- The new `alwaysSaveRunRecords` input keeps `run-report` on every run.

### 1.9.88, 2026-09-27

- URLs without `https://`, such as `x.com/nasa`, now work.
- X pages such as `x.com/home` or `x.com/search` no longer count as handles.
- The run lists each input it cannot read & says how to fix it.
- The run ignores empty `startUrls` rows.
- With nothing to read, the run writes a free diagnostic with the fix.

### 1.9.84, 2026-09-27

- Runs open their dataset while they read X, so they finish sooner.

### 1.9.81, 2026-09-27

- Small runs that go well skip `run-report`, so they cost less in Apify usage.
- The run status now says why the run stopped, with its charged results &
  targets.
- Runs that stop on their input now name the diagnostics output in their status.

### 1.9.80, 2026-09-27

- Runs that stop for missing or unusable input cost less in Apify usage.

### 1.9.79, 2026-09-27

- Support now sees a finished run even while the service is busy.
- Runs with a time limit keep a little more time to finish.

### 1.9.78, 2026-09-27

- Runs with a time limit now stop in time & keep their results.
- Large runs save their progress faster.

### 1.9.77, 2026-09-27

- The run status now says where to find its diagnostics.

### 1.9.75, 2026-09-27

- If the Actor cannot start, the run now ends with 1 free diagnostic.
- Runs with hundreds of targets use less CPU.

### 1.9.74, 2026-09-26

- Runs now start collecting results sooner, so small runs finish faster.

### 1.9.73, 2026-09-26

- A run with several targets that fills maxItems now finishes as complete. It no
  longer reports a time limit or adds a diagnostic row.

### 1.9.72, 2026-09-26

- Large runs use less memory.

### 1.9.71, 2026-09-26

- Targets no longer fail when Xquik is busy. The Actor waits & tries again until
  its time limit.
- A page the service answers slowly in busy hours now arrives instead of timing
  out.

### 1.9.70, 2026-09-26

- Support can now see where each run spends its time.

### 1.9.69, 2026-09-26

- Targets no longer fail when the service is busy. The Actor waits a few seconds
  & tries again until its time limit.

### 1.9.68, 2026-09-25

- Input & Output tab descriptions now say what each field does.
- The README now focuses on what you get & how to run it.

### 1.9.67, 2026-09-25

- An empty run over missing accounts now gives the right `nextAction`.
- Support can now look up every finished run.

### 1.9.66, 2026-09-25

- Missing accounts, Lists & communities no longer add error lines to the log.
- The status & diagnostic still name the missing target.

### 1.9.65, 2026-09-25

- Runs with many accounts finish faster.

### 1.9.64, 2026-09-25 update

- Runs recover faster from temporary service delays.

### 1.9.64, 2026-09-23 update

- The status now names every reason a run stopped early.
- The diagnostic lists each cause in `stopCauses`, with advice.

### 1.9.64, 2026-09-20 update

- The status says when X has no account for a target.
- Community Members runs now return profiles. Members without a public location
  carry `accountBasedIn: null`.

### 1.9.64, 2026-09-19 update

- Accept more input field names from other follower Actors. The README lists
  them.
- A handle or ID list also accepts a single string.
- The README adds a migration table.

### 1.9.64, 2026-09-16

- The input form shows targets, limits & common filters first.
- Output tabs & dataset views show the most useful fields first.

### 1.9.63, 2026-09-15

- Run reports are more accurate when fewer results exist than requested.

### 1.9.62, 2026-09-15

- Large follower runs continue more reliably.
- Read errors now report a partial run & keep collected profiles.

### 1.9.61, 2026-09-13

- Compact profile fields keep their order.
- Resumed runs keep collected results.

### 1.9.60, 2026-09-10

- Minor fixes improve reliability & speed.

### 1.9.59, 2026-09-10

- Runs keep their progress after temporary storage errors.

### 1.9.58, 2026-09-10

- Resumed runs retry failed targets without double charges.

### 1.9.57, 2026-09-10

- Runs recover from temporary errors more reliably.

### 1.9.39 through 1.9.56, 2026-09-01

- The Actor uses a newer runtime & reports peak memory use.
- One result price now applies on every plan. Diagnostics are free.

### 1.9.34 through 1.9.36, 2026-08-12

- Runs start faster & the build is smaller. Long runs respect time limits.

### 1.9.32 through 1.9.33, 2026-08-12

- Runs that reach their cap finish faster & skip duplicates.

### 1.9.28, 2026-08-12

- The code is simpler. Results & billing stay the same.
- Invalid pages now report partial failure.

### 1.9.27, 2026-08-12

- Store support links point to the public Xquik docs & the Issues tab.

### 1.9.26, 2026-08-11

- Resumed runs no longer lose eligible results.

### 1.9.25, 2026-08-11

- Large runs finish faster.

### 1.9.24, 2026-08-11

- Failed runs report partial failure, not zero results.

### 1.9.23, 2026-08-11

- Result limits no longer show as filter warnings.

### 1.9.22, 2026-08-11

- Merged output from several targets stops exactly at the cap.

### 1.9.21, 2026-08-10

- The default Apify timeout is now `0`, so runs have no time limit.
- Runs continue until the cap or until results run out.
- Finite timeouts still leave time to save results.

### 1.9.20, 2026-08-10

- Runs start faster.

### 1.9.19, 2026-08-10

- The code is simpler. Caps & billing stay the same.

### 1.9.18, 2026-08-10

- Runs with several targets finish faster & keep output in order.

### 1.9.17, 2026-08-10

- Finite timeouts keep profiles & write a `deadline_reached` report.

### 1.9.16, 2026-08-10

- Run logs show clearer timing details. Results & billing stay the same.

### 1.9.15, 2026-08-10

- Run logs show clearer timing details. Results & billing stay the same.

### 1.9.14, 2026-08-10

- Progress messages no longer show profile targets.

### 1.9.13, 2026-08-10

- Logs keep handles, queries, IDs & URLs private.

### 1.9.12, 2026-08-10

- Warnings no longer include request details.

### 1.9.11, 2026-08-10

- Error messages no longer include request details.

### 1.9.10, 2026-08-10

- Long bulk reads finish before the run's time limit.

### 1.9.9, 2026-08-10

- The run report schema shows the published Actor version.

### 1.9.8, 2026-08-10

- Quick restarts resume from the newest saved progress.

### 1.9.7, 2026-08-10

- Restarted runs never repeat profiles or charges.

### 1.9.6, 2026-08-10

- Migrated runs resume without duplicates.
- Reports keep their original totals after a restart.

### 1.9.5, 2026-08-09

- Dataset & run report schemas describe every field for AI agents.

### 1.9.4, 2026-08-09

- Safety stops now report `pagination_safety_limit` & keep delivered profiles.
- The run report schema lists every result & budget field.

### 1.9.3, 2026-08-09

- Failed reads count once in `failedTargets`.

### 1.9.2, 2026-08-09

- The form shows Dedupe Mode in place of its duplicate alias.
- `dedupeAcrossTargets` still works in JSON, API & task inputs.

### 1.9.1, 2026-08-09

- Partial results report `partial_failure`.
- Run reports count each failed target once.

### 1.9.0, 2026-08-09

- Followers, following & verified followers return more complete results.
- Filtered runs no longer miss eligible profiles.

### 1.8.0, 2026-08-09

- Unfiltered runs of 100 to 1,000 profiles fill their caps faster.

### 1.7.0, 2026-08-09

- Numeric ID examples set per-target caps.
- The input guide explains List & community relations.
- The final status counts only targets that returned profiles.
- A global cap no longer makes partial coverage look complete.

### 1.6.0, 2026-08-09

- Deep filtered runs finish faster.
- Temporary progress errors no longer stop a run.

### 1.5.0, 2026-08-09

- `bioContains` accepts alternatives separated by commas or new lines.
- A profile matches when its bio contains any of the terms.
- Other filters stay exact.

### 1.4.0, 2026-08-09

- The README explains Store, API, task & pinned build choices.
- `verified` is now the combined public verification flag.
- `verifiedOnly` keeps profiles with any verification.
- The README says new runs start from the first page.

### 1.3.0, 2026-07-30

- Relation, output & dedupe settings use validated selects.
- Compatibility aliases still work in the API without cluttering the form.
- Default runs collect a small follower sample without hidden filters.
- Start URLs accept both documented formats.
- Diagnostic-only runs now write `run-report` before exiting.
- Invalid result limits & negative filters fail before a run starts.
- New runs no longer prefill a follower-count filter.
- Runs recover from temporary errors more reliably.

### 1.2.0, 2026-07-29

- Dataset schemas list every public profile field.
- Compact rows include public availability details.
- The README field catalog matches current outputs.
- Output no longer includes viewer-only fields.
- Fix a security issue in a dependency.

### 1.1.0, 2026-07-14

- Dataset views separate core output, source details & diagnostics.
- Aborted runs finish their pending writes before adding a diagnostic.
- Run reports stay accurate when a user aborts a run.

### 1.0.50, 2026-06-20

- Runs continue past filtered or duplicate pages to find later profiles.
- Every relation mode returns the same public fields.

### 1.0.31, 2026-06-20

- The run status now shows the same message as the diagnostic row.
- Run reports count `diagnosticRows`.

### 1.0.30, 2026-06-20

- Invalid `relation` values fall back to `followers`.
- Other invalid options fall back to safe defaults.
- Runs continue past filtered or duplicate pages to fill the limit.
- Filtered profiles no longer block the same profile from a later target.
- `hasWebsite` recognizes more profile website formats.
- No-input, invalid-input & empty runs write 1 diagnostic row.
- Diagnostic rows carry `resultType: "diagnostic"`.
- URL targets accept plain strings & `{ "url": "..." }` objects.
- Schema descriptions are clearer for AI agents.

### 1.0.29, 2026-06-20

- Input arrays declare item shapes for AI agents.
- README URL examples use `{ "url": "..." }` objects.
- README pricing points to Apify's pricing box.

### 1.0.28, 2026-06-20

- Accept common input aliases, such as `urls`, `usernames` & `maxResults`.
- Accept short paths, such as `handle/followers` & `lists/ID/members`.
- Collect several relations in 1 run through `relations`.
- Merge mode adds `sourceTargets`, `sourceRelations` & `overlapCount`.
- Add raw output through `outputMode: "raw"`.
- Runs respect the Apify maximum total charge setting.
- Filters apply before rows are written, so the Actor never charges for filtered
  profiles.
- Empty runs write at most 1 diagnostic row.

### 1.0.11, 2026-04-23

- Validation messages for `maxItems`, `maxItemsPerTarget` & profile filters are
  clearer.
- Every row carries `schemaVersion`.
- The Information tab links this changelog.
- Profiles without a username no longer break a run.
- Empty runs write at most 1 diagnostic row.

### 1.0.0, 2026-04-20

- Initial release.
