---
title: "List companies"
method: GET
path: "/v1/companies"
tags: ["Companies", "tier:standard"]
---

# List companies

`GET /v1/companies`

## Request

- Base URL: `https://api.particle.pro`
- URL: `https://api.particle.pro/v1/companies`
- Auth: one of:
  - API key in header `X-API-Key`
  - HTTP bearer

Returns a paginated list of companies, ranked by news coverage (most-covered first), then name. Filter by entity slug (e.g., 'apple'), ticker, domain, CIK, or QID. Search by name or fetch updates since a timestamp. With no search or filter, the list contains only companies with news coverage; a filter returns every matching company, with uncovered ones last. A bulk ids lookup is not ranked: it returns companies in request order, unpaginated.

## Query parameters

- `limit` integer: Results per page
- `cursor` string: Opaque pagination cursor from previous response
- `q` string: Search by name (case-insensitive partial match)
- `updated_after` string: Only items updated after this ISO 8601 date or date-time (e.g. 2024-01-01 or 2024-01-01T00:00:00Z). Useful for incremental syncing.
- `ids` string[], nullable: Bulk multi-get: one or more company slugs (e.g. 'apple'), domains (e.g. 'apple.com'), or IDs, comma-separated (max 100) — the same identifiers GET /v1/companies/{id} accepts. When set, returns exactly those companies and the other filters/search and pagination are ignored. Refs that don't resolve are omitted from the response.
- `ticker` string[], nullable: Filter by stock ticker symbol(s), comma-separated
- `domain` string[], nullable: Filter by company domain(s), comma-separated
- `cik` string[], nullable: Filter by SEC CIK(s), comma-separated
- `qid` string[], nullable: Filter by Wikidata QID(s), comma-separated
- `entity_id` string[], nullable: Entity slug(s) (e.g., 'apple', 'nvidia') or ID(s), comma-separated

## Response `200`

OK

- PageCompany
  - `cursor` string: Pass to next request for more results
  - `data` Company[], nullable, required: List of results
    - `description` string: Company description
    - `external_links` ExternalLink[], nullable: Known third-party profiles and identifiers (LinkedIn, social, domain, Wikidata, SEC CIK, tickers). Returned by GET /v1/companies/{id}; the list endpoint omits it.
      - `attributes` ExternalLinkAttribute[], nullable: Optional platform-specific metadata: audience size, profile fields, account status, and related signals. The set varies by platform and grows over time — clients should treat unknown attribute names as additive.
        - `category` string: Broad grouping for the attribute. Today's known values are audience_size, content, profile, and account_status — the set is open and may grow without a versioning event, so clients should treat unrecognised categories as additive rather than invalid.
        - `name` string, required: Platform-native attribute name (e.g. 'subscribers', 'followers', 'views', 'handle'). Vocabulary varies by platform; use Category to group related attributes if you don't recognise the Name.
        - `observed_at` string, date-time: When this attribute was last observed from the upstream source. Omitted when unavailable.
        - `value` unknown, required
      - `identifier` string: Platform-native identifier (numeric id, slug, handle, or full URL). Empty for the 'website' platform, where the URL is the canonical reference.
      - `platform` ExternalLinkPlatform, required
        - `display_name` string, required: Human-readable name suitable for UI display (e.g. 'Apple Podcasts', 'X (Twitter)').
        - `name` string, required: Stable machine name (e.g. 'spotify', 'youtube', 'twitter'). Suitable for filtering or routing on the client.
        - `type` 'podcast_directory' | 'music_service' | 'social_profile' | 'video_channel' | 'community' | 'website' | 'other', required: Broad category for the platform. Use this to group presences in a UI rather than enumerating every Name.
      - `url` string: Resolved web URL for this presence. Built from the identifier via a per-platform template, or passed through for 'website'.
    - `id` string, required: Unique identifier
    - `identifiers` CompanyIdentifiers
      - `cik` string: SEC Central Index Key
      - `domain` string: Company domain
      - `entity` EntityCompact
        - `company` EntityCompany
          - `domain` string: Company website domain
          - `id` string, required: Company identifier
          - `ticker` string: Primary stock ticker symbol
        - `description` string: Short description
        - `id` string, required: Entity ID
        - `image_url` string: Entity image URL
        - `name` string, required: Entity name
        - `person` EntityPerson
          - `company` string: Current company name
          - `id` string, required: Person identifier
          - `image_url` string: Person headshot URL
          - `title` string: Current role title
        - `slug` string, required: Human-readable slug identifier
        - `type` EntityType
          - `name` string, required: Human-friendly display label (e.g. 'Company').
          - `slug` string, required: Stable identifier, safe to pass to the type query parameter (e.g. 'company').
        - `wikipedia_url` string: Wikipedia URL
      - `qid` string: Wikidata QID
      - `ticker` string: Primary stock ticker symbol
    - `image_url` string: Company logo or image URL, when available.
    - `name` string, required: Company name
    - `slug` string: Stable human-readable handle (the linked knowledge-graph slug, e.g. 'nvidia'), when known. Companies have no slug of their own; prefer this for display and pass it (or id) to /v1/companies.
    - `updated_at` string, date-time: Last updated timestamp
  - `has_more` boolean, required: Whether more results exist

## Other responses

- `402`: Payment Required. Read error_code. payment_required is the x402 path: either a keyless request being challenged — pay $0.01 in USDC per request (requirements in the PAYMENT-REQUIRED header) or send a pp_ API key — or a supplied payment that failed settlement (details in the PAYMENT-RESPONSE header; retry the same signature before signing a new one). See https://docs.particle.pro/x402. Any other code means the credential was accepted but does not cover this request (a plan or session gate such as premium_required or paid_plan_confirmation_required); its resolve says how to obtain access, and no payment header is sent.
- `default`: Error

---

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