Communities
X community members & profile export API guide
Scrape X community members into profile rows with usernames, bios, verification, and follower counts. Export every cursor page for review or CRM imports.
- 200
- 400
- 401
- 402
- 404
- 424
- 429
- 502
GET
X community members & profile export API guide
Scrape X community members into explicit profile rows. Store the community and user IDs with every cursor result. Keep the username, bio, verification, follower count, and cursor.
Use
The community ID is empty or invalid.
Missing or invalid API key.
The community could not be resolved. Check the community ID.
The read service returned an error. Retry after a short delay.
Your tier rate limit was exceeded. Wait for the
Send
X community member scraping questions
Scrape X community members
CallGET /api/v1/x/communities/{id}/members with the numeric community ID.
Store the community ID and stable user ID. Keep the username, profile name,
bio, location, and verification. Record an ISO 8601 collection time before
requesting another cursor. Store available follower and following counts.
Keep the profile image URL. Store the cursor returned with each profile batch.
Save the page before advancing its opaque cursor. Use has_next_page as the
only pagination guard. Send another request only for the boolean true. Reuse
the exact next_cursor. Deduplicate a resumed page by community ID and user ID.
Mark credit-bounded, failed, or interrupted runs as partial. Use the moderators
route for role-specific profiles. The members route returns every visible
member profile.
What is the best way to extract data from a Twitter community?
Replace “data” with the community records the workflow needs. Use the info route for the community name and description. Use the members route for user IDs and profile fields. Use the moderators route for role-specific profiles. Retrieve recent Community posts through the tweets route. Search Community posts for a keyword through Community Search. Keep community profiles and tweets in separate tables. Join them with stable community and user IDs. Save page cursors, collection times, row counts, and completion states. Export JSON for applications. Create CSV or XLSX only when analysts need rows. Never flatten membership, moderator roles, and tweet activity into one ambiguous record.How do I scrape members from an X community?
CallGET /api/v1/x/communities/{id}/members with the numeric community ID.
Store each user ID, username, profile name, bio, and verification state. Add
the follower count and page cursor.
Stop when has_next_page is false. Until then, send next_cursor without
modification. Save each profile page before advancing its cursor.
Deduplicate resumed pages by stable user ID. Write the community ID into every
exported profile record. Record the collection time because usernames, bios,
verification, and audience counts can change. Do not infer moderator status
from membership.
Use the dedicated moderators route for that role. Mark an interrupted or
credit-bounded export as partial.
Twitter community API
Choose the route that matches the record. The info route returns community details. The members route returns member profiles. The moderators route returns moderator profiles. The tweets route returns recent community posts. Community search returns posts matching a query. For member exports, build one roster row per community ID and user ID. Keep profile fields, source cursor, collection time, and completion state. For tweet exports, store Tweet ID, author ID, text, timestamp, engagement, media, and cursor. Keep those schemas separate. Use stable IDs for joins. Respect API-key scope, credits, page limits, and rate limits.How should I compare community member lists?
Complete every cursor page before comparing snapshots. Mark interrupted runs as partial. Use community ID plus user ID as the comparison key. Report newly observed and missing members separately. Never assign a reason for an addition or removal. Refresh a profile only when later work requires current follower counts, following counts, or biographies.Requested result counts are upper bounds for paid authenticated calls. Low
credit balances can reduce a page or ID list. If zero results are affordable,
Xquik returns
402 insufficient_credits.1 credit per result returned · All plans from $0.00012/credit
GET /x/communities/{id}/members for member exports, CRM enrichment,
audience review, or moderator handoff. It creates one row per community member.
Store community_id, member_id, username, display_name, bio,
follower_count, verified, profile_image_url, and next_cursor.
Build a community member export
The community member export becomes complete after every cursor page finishes. Save each profile page before advancing its cursor. Mark credit-bounded, failed, and interrupted runs as partial membership snapshots. Mark the export complete only afterhas_next_page is false.
Community membership shows roster inclusion. It does not prove posting
activity. Retrieve recent Community posts through
Community Tweets. Use
Community Search to find posts by keyword.
Join those posts to member profiles by manifest_id, community_id, and stable
user ID.
Use Community Moderators for
role-specific profiles. Verification and follower counts do not prove a
moderator role.
X Lists use different IDs and membership rules. Review X’s official
List Members Lookup
before migrating a List workflow. Store source_type and its source ID. Use
community_id for Community rows and list_id for List rows. Join and
deduplicate with the source ID plus member_id.
Use this route to enumerate profiles that belong to one community. Keep the
community ID on every exported row. A username alone cannot identify its
source community.
Choose columns that support the next task:
- User ID, username, and profile name.
- Biography, location, and verification state.
- Follower and following counts.
- Store the Community ID and cursor with every page’s ISO 8601 collection time.
has_next_page as the only pagination guard. The next request requires
the boolean value true. Pass next_cursor without modification. Persist each
page before saving its cursor. Deduplicate repeated results by user ID after
resuming a job.
Profile fields can change after collection. Record an ISO 8601 time for every
returned profile. Refresh the profile through user lookup when the workflow requires
current bios, follower counts, following counts, or avatars.
Compare community membership snapshots
Collect every cursor page before comparing membership. Mark interrupted runs as partial. Use community ID and user ID as the comparison key. Record newly observed and missing members separately. Avoid inferring why a membership changed. Keep the snapshot’s page count, row count, first cursor, and completion time. These values help reviewers distinguish a real change from an incomplete export. Store membership notes outside returned profile fields. Never place private moderation notes inside a public username or biography column. When another process adds moderator status, store it in a separatecommunity_role column.
Path parameters
string
required
Community ID (numeric string).
Query parameters
string
Pagination cursor from a previous response. Omit for the initial request.
number
Results per request. Range: 20-200. Default:
20.User result filters
These filters apply before billing. Selective filters can return fewer rows.integer
Require this minimum follower count. Filtering happens before billing.
integer
Allow this maximum follower count. Missing counts pass this filter.
integer
Require this minimum following count.
integer
Allow this maximum following count. Missing counts pass this filter.
integer
Require this minimum post count.
integer
Allow this maximum post count. Missing counts pass this filter.
integer
Require this minimum account age in days.
boolean
When
true, only return verified profiles.string
Match the exact verification type.
boolean
When
true, require a profile website.boolean
When
true, require a profile location.string
Require every comma-separated or line-separated bio term.
string
Require this text in the profile location.
string
Require this text in the username.
Headers
string
Full account key. Sessions and OAuth also work.
string
Bearer xq_your_guest_key_here for paid_reads.Response
200 OK
object[]
Array of community members.
User object fields.
string
User ID.
string
X username.
string
Display name.
string
Profile bio.
number
Reports the profile’s follower count.
number
Following count.
boolean
Verified status.
string
Profile image URL.
string
Profile location.
string
Account creation date (ISO 8601).
number
Total number of tweets posted. Omitted if unavailable.
string
Cover/banner image URL. Omitted if unavailable.
number
Total number of media tweets posted. Omitted if unavailable.
string
Website URL from profile. Omitted if empty.
number
Total number of tweets liked. Omitted if unavailable.
boolean
Whether the user has custom timelines. Omitted if unavailable.
boolean
Whether the user is an X translator. Omitted if unavailable.
string[]
Country codes where the account is withheld. Omitted if empty.
boolean
Whether the account is flagged as possibly sensitive. Omitted if unavailable.
string[]
Lists pinned Tweet IDs. Omitted if none.
boolean
Whether the account is marked as automated. Omitted if unavailable.
string
Username of the account operator if automated. Omitted if not automated.
Whether the account is unavailable. Omitted if available.
Reason the account is unavailable. Omitted if available.
string
Verification type (e.g.
Business, Government). Omitted if not verified or standard blue check.object
Structured profile bio with entity annotations. Omitted if unavailable.
boolean
Whether the account has X Premium verification. Omitted if unavailable.
boolean
Normalized verification status. Omitted if unavailable.
string
Profile banner URL. Omitted if unavailable.
boolean
Indicates whether the account protects its Tweets. Omitted if unavailable.
string
Role within the requested community context. Omitted outside community results.
boolean
Whether more results are available.
string
Cursor for subsequent results. Pass as the
cursor query parameter.400 Invalid community ID
401 Unauthenticated
Anonymous requests getWWW-Authenticate: Bearer and a guest wallet checkout action. This is not a Payment challenge.
402 Payment required
Account keys get account options; guest keys get guest top-up only. No checkout starts automatically. Confirm any payment action.404 Community not found
502 X API unavailable
429 Rate limit exceeded
Retry-After header before retrying.
424 Dependency failed
xquik-api-contract: 2026-04-29 to opt in to HTTP 424. Default v1 returns
HTTP 502 with x_api_unavailable.
Next steps. Community Info for community details, or Community Moderators to list moderators.
- 200
- 400
- 401
- 402
- 404
- 424
- 429
- 502
X community members & profile export API guide