---
title: "Search the X users dataset"
method: GET
path: "/datasets/x-users/search"
tags: ["Datasets"]
---

# Search the X users dataset

`GET /datasets/x-users/search`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/datasets/x-users/search`
- Auth: API key in header `x-api-key`

Searches public X (Twitter) user profiles stored in a search index. Sort enum: `relevance`, `followers_desc`, `followers_asc`, `crawled_at_desc`, `crawled_at_asc`, `created_at_desc`, `created_at_asc`. Billing: this search costs 1 credit per record returned, with a minimum of 2 (an empty result costs 2, a full page of 100 costs 100).

## Query parameters

- `q` string
- `username` string
- `source_tier` string
- `is_blue_verified` boolean
- `has_bio` boolean
- `has_external_url` boolean
- `min_followers` integer
- `max_followers` integer
- `min_ratio` number
- `max_ratio` number
- `created_after` string
- `created_before` string
- `crawled_after` string
- `crawled_before` string
- `sort` 'relevance' | 'followers_desc' | 'followers_asc' | 'crawled_at_desc' | 'crawled_at_asc' | 'created_at_desc' | 'created_at_asc'
- `page` integer
- `page_size` integer

## Headers

- `x-api-key` string, required

## Response `200`

OK

- DatasetsXUsersSearchResponseDoc
  - `code` integer
  - `data` DatasetsXUserSearchResponse
    - `dataset` string
    - `items` EsXUserDatasetItem[]
      - `avatar_url` string
      - `banner_url` string
      - `bio` string
      - `bio_url_host` string[]
      - `bio_urls` string[]: BioURLs are links written in the bio text, expanded from t.co. Distinct from ExternalURL (the single profile-header link).
      - `crawled_at` string
      - `created_at` string
      - `email` string: Email is an address the account self-published in its own bio. Extracted verbatim, never inferred or de-obfuscated. HasEmail is the faceting flag (an exists query on a keyword is fine, but a bool keeps parity with the other has_* fields and is cheaper to aggregate).
      - `external_url` string
      - `follower_following_ratio` number
      - `followers` integer
      - `following` integer
      - `has_bio` boolean
      - `has_bio_url` boolean
      - `has_email` boolean
      - `has_external_url` boolean
      - `id` string
      - `is_blue_verified` boolean
      - `is_default_profile_image` boolean: IsDefaultProfileImage marks never-customized shells.
      - `likes` integer
      - `listed` integer: Listed is how many curated lists include the account -- the best authority proxy available. Media/Likes are activity signals.
      - `location_raw` string
      - `media` integer
      - `name` string
      - `posts` integer
      - `schema_version` integer
      - `source_tier` string
      - `username` string
      - `verified_type` string: VerifiedType is the verification flavour ("Business", "Government", ...); empty for ordinary/blue accounts.
    - `page` integer
    - `page_size` integer
    - `sort` string
    - `total` integer
  - `msg` string

## Other responses

- `400`: Bad Request
- `429`: Too Many Requests
- `500`: Internal Server Error

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/afac9b012a27?raw)
