X / Twitter Account Origin Intelligence avatar

X / Twitter Account Origin Intelligence

Pricing

from $0.50 / 1,000 account profile analyzeds

Go to Apify Store
X / Twitter Account Origin Intelligence

X / Twitter Account Origin Intelligence

Extract X/Twitter account origin signals by screen name, including account_based_in, app/source, username change count, last username change time, and public profile metadata

Pricing

from $0.50 / 1,000 account profile analyzeds

Rating

0.0

(0)

Developer

Arjun AI

Arjun AI

Maintained by Community

Actor stats

0

Bookmarked

12

Total users

8

Monthly active users

5 days ago

Last modified

Share

X Twitter Account Origin Intelligence

Extract account-origin signals and public profile metadata from X/Twitter by screen name.

Most profile scrapers focus on biographies and follower counts. This Actor also returns harder-to-find account provenance fields, including:

  • account_based_in - the country or region associated with the account
  • source - the signup or application source reported by X
  • username_changes.count - the number of recorded username changes
  • username_changes.last_changed_at_msec - the latest recorded username-change time
  • created_country_accurate - whether X marks the creation-country signal as accurate
  • rest_id - the account's numeric X user ID

Use it for account provenance checks, OSINT research, risk review, creator research, lead enrichment, and social media monitoring.

Quick start

Enter one or more X/Twitter screen names in the Actor input and click Start:

{
"screenNames": [
"fxtrader",
"@elonmusk",
"https://x.com/axiaisacat"
]
}

Each input can be a plain username, an @handle, or a full x.com/twitter.com profile URL. The Actor converts every accepted format to a plain username before requesting X. Duplicate accounts are removed after normalization, so fxtrader, @fxtrader, and https://x.com/fxtrader are queried only once.

Input

FieldTypeRequiredDescription
screenNamesstring[]YesOne account per item as fxtrader, @fxtrader, or https://x.com/fxtrader. Empty and duplicate values are ignored.

The Actor uses Apify Proxy by default. Proxy settings and account credentials are managed internally and are not part of the public Actor input.

Output

Each requested account is stored as one item in the default dataset. A result contains the requested screen name and a nested profile object:

{
"screen_name": "goocarlos",
"profile": {
"account_based_in": "United States",
"source": "United States App Store",
"created_country_accurate": true,
"rest_id": "14046502",
"username_changes": {
"count": "1",
"last_changed_at_msec": "1664180698550"
},
"user_created_at": "Wed Feb 27 04:22:21 +0000 2008",
"description": "CEO & Founder",
"entities": {
"description": {}
},
"is_blue_verified": true,
"business_account": {},
"creator_subscriptions_count": 0,
"has_graduated_access": true,
"favourites_count": 2754,
"followers_count": 27422,
"friends_count": 923,
"listed_count": 349,
"location": "San Jose, CA",
"media_count": 487,
"user_name": "Luyu Zhang",
"normal_followers_count": 27422,
"possibly_sensitive": false,
"has_custom_timelines": true,
"needs_phone_verification": false,
"profile_banner_url": "https://pbs.twimg.com/profile_banners/14046502/example",
"profile_image_url_https": "https://pbs.twimg.com/profile_images/example_normal.jpg",
"protected": false,
"user_screen_name": "goocarlos",
"statuses_count": 2928,
"verified": false,
"utc_offset": 0,
"url": ""
}
}

Values in this example are illustrative. Fields may be empty when X does not provide them for an account.

If a requested username does not exist or the account is unavailable, the Actor records the condition and continues with the remaining usernames:

{
"screen_name": "unknown_user",
"status": "not_found",
"error": "X user @unknown_user was not found or is unavailable."
}

Unavailable-account records are not charged as profile-result events.

If X cannot be reached after the initial request and two retries, the Actor writes an uncharged failure record for that username and continues with the remaining inputs:

{
"screen_name": "example_user",
"status": "request_failed",
"error": "Network request for @example_user failed after 3 attempts."
}

Retryable network failures and HTTP 401, 403, 404, 429, and 5xx responses switch both the credential and Apify Proxy session. A 429 response uses a short retry delay. Genuine unavailable-user responses remain not_found and are not retried.

Output fields

Account origin and history

FieldDescription
account_based_inCountry or region associated with the account.
sourceSignup or application source reported by X.
created_country_accurateWhether X marks the creation-country signal as accurate.
username_changesObject containing the recorded change count and latest change timestamp in Unix milliseconds.
rest_idNumeric X user ID used as a stable account identifier.

Identity

FieldDescription
user_name, user_screen_name, user_created_atIdentity fields returned by the detailed profile response.
profile_image_url_httpsHTTPS profile image URL from the detailed profile.
profile_banner_urlProfile banner URL, when available.
descriptionPublic profile biography.
entitiesStructured links and entities associated with public profile text.
locationSelf-declared profile location.
urlPublic profile URL field.

Audience and activity

FieldDescription
followers_countPublic follower count.
normal_followers_countNormal follower count reported by X.
friends_countNumber of accounts followed.
favourites_countNumber of liked posts.
statuses_countNumber of posts and reposts reported by X.
media_countNumber of media posts.
listed_countNumber of public lists containing the account.
creator_subscriptions_countCreator subscription count reported by X.

Account state

FieldDescription
is_blue_verifiedWhether the account currently has X Blue verification.
verifiedLegacy verification flag.
protectedWhether the account is protected.
possibly_sensitiveSensitive-content account flag.
business_accountBusiness-account metadata returned by X.
has_graduated_accessGraduated-access state returned by X.
has_custom_timelinesWhether custom timelines are enabled for the account.
needs_phone_verificationPhone-verification requirement reported by X.
utc_offsetLegacy UTC offset value.

Run with the API

Replace YOUR_APIFY_TOKEN with your Apify API token.

curl -X POST \
"https://api.apify.com/v2/acts/arjun_code~x-twitter-account-origin-scraper/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"screenNames":["elonmusk","axiaisacat"]}'

The request starts an Actor run. Use the run's default dataset ID from the API response to retrieve results after the run succeeds.

Run with Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("arjun_code/x-twitter-account-origin-scraper").call(
run_input={"screenNames": ["elonmusk", "axiaisacat"]}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

Run with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('arjun_code/x-twitter-account-origin-scraper').call({
screenNames: ['elonmusk', 'axiaisacat'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Pricing

This Actor uses pay-per-event pricing:

  • Event: profile-result
  • Price: $0.0005 per profile result
  • Equivalent price: $0.50 per 1,000 profile results

One profile-result event is charged for each successfully retrieved profile. not_found and request_failed records are written to the dataset without a profile-result charge. Your final run price depends on the number of profiles produced. Platform usage may be billed separately when that option is enabled in the Actor's Store pricing configuration; check the pricing section shown by Apify before starting a run.

Use cases

  • Verify account-origin signals during OSINT research
  • Review username-change history and stable numeric user IDs
  • Enrich creator, influencer, lead, or customer records
  • Support social media monitoring and account risk analysis
  • Compare public audience, activity, and verification metadata

Try the ready-made X Twitter Account Origin Data Extractor example, or enter your own screen names in the Actor input.

Continue your X research workflow

GoalActor
Discover public accounts by keyword, profession, niche, or locationX (Twitter) People Search Scraper
Export followers or accounts followed by one or more profilesX Followers & Following Scraper — No Login
Inspect account origin, signup source, and username-change historyX Twitter Account Origin Intelligence

A typical workflow is: discover relevant accounts, export their public audiences, then inspect origin signals for selected profiles.

Limitations

  • Results depend on data currently returned by X/Twitter and individual fields may be empty or unavailable.
  • Account-origin signals are reported by X and should not be treated as independent proof of a person's identity, nationality, or physical location.
  • Suspended, deleted, renamed, nonexistent, or otherwise unavailable accounts are returned with status: "not_found", and the Actor continues processing the remaining usernames.
  • Authentication, rate-limit, server, and network failures are retried up to two times. Each retry switches the credential and Apify Proxy session. If all attempts fail, an uncharged request_failed item is written and the Actor continues with the next username.
  • X may change its response structure or access controls, which can temporarily affect availability.
  • A single run processes screen names sequentially and writes each result immediately, so larger lists take longer to complete but completed items are preserved if a later request fails.

Privacy and responsible use

This Actor processes publicly accessible X/Twitter account and profile metadata. Use the results only for lawful purposes and in accordance with applicable privacy laws, X's terms, and Apify's terms. Do not use account-origin signals alone to make high-impact decisions about individuals.

Support

If a run fails or a field is unexpectedly missing, open an issue from the Actor's Issues tab and include the run ID. Do not post API tokens, cookies, or other credentials in public issues.