Billing

List users

Admin-only endpoint returning a filtered, sorted, paginated page of users with non-sensitive profile fields and the total matching count. request_count, last_request_at, product_activated and first_successful_request_at are derived from billing events: every product-route call and every MCP tools/call or resources/read writes one, including free (zero-credit) routes, but the MCP initialize handshake does not. mcp_initialize_count_30d and last_mcp_initialize_at report that handshake separately from api_usage, so a user who connects over MCP but never calls a tool can be told apart from a dormant one.

get/admin/billing/stats/users/list

Request

  • Base URL: https://api.crawlora.net/api/v1
  • URL: https://api.crawlora.net/api/v1/admin/billing/stats/users/list
  • Auth: API key in header x-api-key

Query parameters

qstring

Case-insensitive search over email and username

plan'Free' | 'Starter' | 'Growth' | 'Pro' | 'Business' | 'Enterprise' | 'Admin'

Billing plan

providerstring

Auth provider

sourcestring

Signup source, for example github, devto, medium, hashnode, google, newsletter

mediumstring

Signup UTM medium, matched against first-touch or last-touch attribution

campaignstring

Signup UTM campaign, matched against first-touch or last-touch attribution

activatedboolean

Filter by email-activation status

bannedboolean

Filter by banned status

sort'created_at' | 'email' | 'username' | 'plan' | 'provider' | 'requests' | 'last_request_at' | 'signup_source' | 'signup_medium' | 'signup_campaign' | 'signup_landing_path' | 'signup_click_path' | 'signup_referrer_host' | 'signup_ip' | 'signup_browser_id_hash' | 'signup_country' | 'signup_locale' | 'signup_browser_language'

Sort field

order'asc' | 'desc'

Sort order

limitinteger

Page size (1-100, default 25)

offsetinteger

Page offset

Headers

x-api-keystring required

Admin API key required unless an Admin JWT is already present

Response

User list page

codeinteger
msgstring

Example response

{
  "code": 200,
  "data": {
    "items": [
      {
        "email": "user@example.com",
        "id": "49e5bf3f520ebb5ae7f094df97a3e08b",
        "is_activated": true,
        "mcp_initialize_count_30d": 9627,
        "plan": "Free",
        "product_activated": true,
        "provider": "password",
        "referral_attribution_id": "attr-1",
        "referral_referrer_user_id": "user-referrer",
        "request_count": 1280,
        "retained_7d": true,
        "signup_accept_language": "de-DE,de;q=0.9,en;q=0.8",
        "signup_browser_id_hash": "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
        "signup_browser_language": "de",
        "signup_campaign": "mcp-launch-2026-06",
        "signup_click_path": "/pricing",
        "signup_content": "devto-post-footer",
        "signup_country": "US",
        "signup_ip": "203.0.113.10",
        "signup_landing_path": "/signup?utm_source=devto&utm_medium=article",
        "signup_last_referrer_host": "chatgpt.com",
        "signup_locale": "en",
        "signup_medium": "article",
        "signup_referrer_host": "dev.to",
        "signup_region": "California",
        "signup_source": "google",
        "stripe_customer_id": "cus_123",
        "subscription_status": "active",
        "username": "user"
      }
    ],
    "limit": 25,
    "total": 315
  },
  "msg": "OK"
}

Changes

No recorded changes to this operation across all 2 revisions of this API.