Skip to main content
GET
X Community Moderators API & Admin Profiles
Export moderator profiles for one X community. Store stable user IDs for access reviews. Analyze visible profiles or monitor the moderator roster.

X Community Moderator API Questions

What Does an X Community Moderator Do?

X’s moderator playbook separates creators, admins, moderators, and members. The creator is also the first admin. Admins can change settings and manage moderator roles. Moderators review reported Community posts, manage members, and enforce Community rules. This route only reads profiles exposed by the visible moderator roster. It cannot assign roles, remove members, return reports, or expose private actions. Read X’s official Communities Moderator Playbook for current role responsibilities. Store communityRole only when the response supplies it. Never infer admin status from verification, follower counts, biographies, or profile images.

How Do I Find X Community Moderators?

Open the Community page when one manual lookup is enough. X says direct Community URLs expose visible member and moderator lists. X documents that public interface in its official Communities guide. Use this API for repeatable collection, pagination, exports, and snapshot review. Start with the numeric Community ID. Store that ID with every moderator ID. A username can change and cannot identify the source Community. Request another page only when has_next_page is exactly true. Pass the returned cursor string back without editing it. Mark the roster complete only after has_next_page is false.

Which Tools Support X Community Moderation?

Choose each endpoint by the record it returns:
  • Retrieve visible moderator profiles with this route.
  • Retrieve rules and counts with Community Info.
  • Retrieve recent posts with Community Tweets.
  • Search Community posts with Community Search.
  • Review reports or change roles in X’s own moderator interface.
The moderator API does not return enforcement logs or reported-post queues. Keep those workflows separate from public profile exports. This boundary prevents a profile row from becoming an unsupported moderation decision.

Can AI Automate Community Moderation?

Do not automate enforcement from a moderator profile snapshot. Verification, follower counts, biographies, and avatars do not prove behavior or permissions. Use automation to normalize rows, compare complete snapshots, and queue human review. An AI model may summarize an approved public change set. Keep private review notes outside the exported profile record. Require a human decision before any account action.
Requested result counts are upper bounds for paid authenticated calls. When remaining credits cannot cover the full page or ID list, Xquik returns fewer results. If zero paid results are affordable, it returns 402 insufficient_credits.
1 credit per result returned · All plans from $0.00012/credit
Use GET /x/communities/{id}/moderators for moderator audits, governance review, trust and safety queues, or CRM enrichment. It creates one row per community moderator. Store community_id, moderator_id, username, display_name, bio, follower_count, verified, profile_image_url, and next_cursor. Store page_size and has_next_page with the checkpoint when you paginate moderator audits or saved review queues.

Direct Moderator Handoff

Use the first page with no cursor. Request the next page only when has_next_page is exactly true. Pass next_cursor back as cursor without modification. Requested result counts are upper bounds. Use page_size to record the returned moderator count for each page.

Moderator rows

Store one row per moderator with community ID, user ID, username, profile fields, verification, and follower count.

Next page

Persist each page and its pagination fields before requesting another page.

Default page

Expect up to the default page size per call, reduced when the caller cannot cover every paid result.

Saved export

Use community_moderator_explorer when the workflow needs an extraction job or CSV, JSON, or XLSX output.

Build a Complete Moderator Roster

Treat each response page as a durable checkpoint. Save every profile row before storing its cursor. Resume with the exact saved cursor after an interruption. Create a local export_manifest_id for each collection run. Store it with community_id, moderator_id, page number, cursor, and collection time. This key prevents one roster from mixing with another collection run. Label credit-bounded, failed, and interrupted runs as incomplete moderator exports. Do not compare a partial roster with a completed baseline. A partial comparison can falsely report removed moderators. Deduplicate resumed pages with community_id and moderator_id. Keep the latest username as a label. Use numeric user IDs to join collection runs. Store these completion fields with the export manifest:
  • Requested Community ID.
  • Returned page count and profile count.
  • First and final cursor values.
  • Final has_next_page value.
  • Collection start and completion times.
  • Complete, partial, or failed status.
These fields show whether the roster finished successfully.

Audit a Community Moderation Team

Use this route when the role matters more than general membership. Every returned profile represents a moderator visible for the selected community. Keep the community ID and collection time with each profile. Review moderator rows for:
  • User ID, username, and profile name.
  • Verification state and public biography.
  • Follower counts and profile image.
  • Cursor position and collection time.
Compare snapshots by user ID. A changed username does not represent a new moderator. Flag added and removed IDs for review. Do not combine moderator rows with the full member roster silently. Give each export a clear role column. This prevents downstream tools from granting moderator meaning to ordinary members. Both community_id and your local export_manifest_id must match. Then join the moderator roster with Community Info. Keep rules, member counts, and moderator profiles in separate tables. This preserves each endpoint’s public response contract. Store communityRole only when the response provides it. Never expand it into a broader permission. An omitted role cannot prove admin, creator, or member permissions.

Review Moderator Coverage

Compare complete moderator snapshots by Community ID and user ID. Record added and removed IDs without guessing the reason. Use this review sequence:
  1. Confirm both exports ended with has_next_page set to false.
  2. Confirm both exports use the same numeric Community ID.
  3. Compare stable moderator IDs, not usernames or display names.
  4. Ask a reviewer to inspect added and missing IDs.
  5. Store the decision outside the public profile snapshot.
Keep one row per visible moderator. Store the username only as a mutable label. Use the numeric user ID for durable joins. Escalate unexpected changes to a human reviewer. Require human approval before any account action. Store each review outcome outside the public profile snapshot. Record the reviewer, decision time, and Community ID in your own system. Refresh a profile only when current biography or counts matter. Preserve the original moderator observation.

Path Parameters

string
required
Community ID (numeric string).

Query Parameters

string
Pagination cursor from a previous response. Omit for the first page.

Which Community Endpoint?

Community moderators

Use GET /x/communities/{id}/moderators for governance audits, moderator review queues, and profile enrichment.

Community members

Use GET /x/communities/{id}/members for the broader member list.

Community info

Use GET /x/communities/{id}/info for member count, moderator count, rules, and join policy.

Community tweets

Use GET /x/communities/{id}/tweets for posts inside one community.

Community search

Use GET /x/communities/tweets for keyword search across community tweets.

Saved exports

Use Create extraction with community_moderator_explorer, community_extractor, or community_post_extractor for queued file exports.

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 moderators. 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.
boolean
Whether the account is unavailable. Omitted if available.
string
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
Whether the account protects its posts. Omitted if unavailable.
string
Role within the requested community context. Omitted outside community results.
boolean
Whether more results are available.
string
Cursor for the next page. Pass as the cursor query parameter.

400 Invalid community ID

The community ID is empty or invalid.

401 Unauthenticated

Anonymous requests get WWW-Authenticate: Bearer and a guest wallet checkout action. This is not a Payment challenge.
Missing or invalid API key.

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

The community could not be resolved. Check the community ID.

502 X API unavailable

The read service returned an error. Retry after a short delay.

429 Rate Limit Exceeded

Your tier rate limit was exceeded. Wait for the Retry-After header before retrying.

424 Dependency Failed

Send xquik-api-contract: 2026-04-29 to opt in to HTTP 424. Default v1 returns HTTP 502 with x_api_unavailable.
Next steps: Community Members for the full member list, or Community Info for community details.