Every change to this Actor, with its date.
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.
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.
Every run uses 256 MB again, which is faster & more reliable for small runs.
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.
A run near its time limit stops before a read it can't finish.
A run that started late says how long it waited, out of its time limit.
Requests to Xquik never follow a redirect, so the key stays with Xquik.
A run waits out a brief Xquik outage instead of failing.
Rows saved before an outage stay saved & are charged once.
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.
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.
Runs up to maxItems 300 with up to 5 targets use 128 MB & cost less.
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.
The README names the Actor as Xquik's X Follower Scraper, opens with the
benchmark result & explains empty, partial & stopped runs.
The benchmark shows fields per row & names Actors by Apify slug.
Compact rows show accountBasedInUnavailable: true when X withheld the
account location.
Runs under 34 results cost less in Apify usage, with no progress saves.
An aborted run's status counts its saved results, even during a slow upload.
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.
The README shows a benchmark against 9 follower Actors, with every run public.
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.
During a run, the status shows how many results it has collected so far.
The status says when the run waits to retry.
The new alwaysSaveRunRecords input keeps run-report on every run.
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.
Runs open their dataset while they read X, so they finish sooner.
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.
Runs that stop for missing or unusable input cost less in Apify usage.
Support now sees a finished run even while the service is busy.
Runs with a time limit keep a little more time to finish.
Runs with a time limit now stop in time & keep their results.
Large runs save their progress faster.
The run status now says where to find its diagnostics.
If the Actor cannot start, the run now ends with 1 free diagnostic.
Runs with hundreds of targets use less CPU.
Runs now start collecting results sooner, so small runs finish faster.
A run with several targets that fills maxItems now finishes as complete. It no
longer reports a time limit or adds a diagnostic row.
Large runs use less memory.
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.
Support can now see where each run spends its time.
Targets no longer fail when the service is busy. The Actor waits a few seconds
& tries again until its time limit.
Input & Output tab descriptions now say what each field does.
The README now focuses on what you get & how to run it.
An empty run over missing accounts now gives the right nextAction .
Support can now look up every finished run.
Missing accounts, Lists & communities no longer add error lines to the log.
The status & diagnostic still name the missing target.
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.
The input form shows targets, limits & common filters first.
Output tabs & dataset views show the most useful fields first.
Run reports are more accurate when fewer results exist than requested.
Large follower runs continue more reliably.
Read errors now report a partial run & keep collected profiles.
Compact profile fields keep their order.
Resumed runs keep collected results.
Minor fixes improve reliability & speed.
Runs keep their progress after temporary storage errors.
Resumed runs retry failed targets without double charges.
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.
The code is simpler. Results & billing stay the same.
Invalid pages now report partial failure.
Store support links point to the public Xquik docs & the Issues tab.
Resumed runs no longer lose eligible results.
Large runs finish faster.
Failed runs report partial failure, not zero results.
Result limits no longer show as filter warnings.
Merged output from several targets stops exactly at the cap.
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.
The code is simpler. Caps & billing stay the same.
Runs with several targets finish faster & keep output in order.
Finite timeouts keep profiles & write a deadline_reached report.
Run logs show clearer timing details. Results & billing stay the same.
Run logs show clearer timing details. Results & billing stay the same.
Progress messages no longer show profile targets.
Logs keep handles, queries, IDs & URLs private.
Warnings no longer include request details.
Error messages no longer include request details.
Long bulk reads finish before the run's time limit.
The run report schema shows the published Actor version.
Quick restarts resume from the newest saved progress.
Restarted runs never repeat profiles or charges.
Migrated runs resume without duplicates.
Reports keep their original totals after a restart.
Dataset & run report schemas describe every field for AI agents.
Safety stops now report pagination_safety_limit & keep delivered profiles.
The run report schema lists every result & budget field.
Failed reads count once in failedTargets .
The form shows Dedupe Mode in place of its duplicate alias.
dedupeAcrossTargets still works in JSON, API & task inputs.
Partial results report partial_failure .
Run reports count each failed target once.
Followers, following & verified followers return more complete results.
Filtered runs no longer miss eligible profiles.
Unfiltered runs of 100 to 1,000 profiles fill their caps faster.
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.
Deep filtered runs finish faster.
Temporary progress errors no longer stop a run.
bioContains accepts alternatives separated by commas or new lines.
A profile matches when its bio contains any of the terms.
Other filters stay exact.
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.
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.
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.
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.
Runs continue past filtered or duplicate pages to find later profiles.
Every relation mode returns the same public fields.
The run status now shows the same message as the diagnostic row.
Run reports count diagnosticRows .
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.
Input arrays declare item shapes for AI agents.
README URL examples use { "url": "..." } objects.
README pricing points to Apify's pricing box.
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.
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.