> ## Documentation Index
> Fetch the complete documentation index at: https://glasser.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# List Providers and Endpoints

Get the public Data Sources list in one response. Use it to browse Providers,
build a Provider picker, or choose an Endpoint for your product.

**Free. No Key, request body, or pagination is required.** Match `provider`
between `providers` and `entries` to find a Provider's Endpoints.

The response is cached and does not apply your Key's Policy. It contains
display prices, without input schemas or full charge rules. Use
[Inspect](/docs/api-reference/endpoints/inspect) with your Key for these details,
then [create a Run](/docs/api-reference/runs/create) to retrieve data.

## Response

<ResponseField name="provider_count" type="integer" required>
  Number of Providers in `providers`.
</ResponseField>

<ResponseField name="endpoint_count" type="integer" required>
  Number of Endpoints in `entries`.
</ResponseField>

<ResponseField name="providers" type="object[]" required>
  Providers in the public Data Sources list.

  <Expandable title="Provider fields">
    <ResponseField name="provider" type="string" required>
      Provider identifier, such as `apify`. Matches `entries[].provider`.
    </ResponseField>

    <ResponseField name="label" type="string" required>
      Display name, such as `Apify`.
    </ResponseField>

    <ResponseField name="description" type="string" required>
      Short description. An empty string means no description is available.
    </ResponseField>

    <ResponseField name="logo" type="string" required>
      Logo filename used by the website, not a full URL. An empty string means
      no logo is available.
    </ResponseField>

    <ResponseField name="endpoint_count" type="integer" required>
      Number of entries for this Provider.
    </ResponseField>

    <ResponseField name="categories" type="string[]" required>
      Category identifiers covered by this Provider's Endpoints.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="entries" type="object[]" required>
  One entry per Endpoint in the public list.

  <Expandable title="Endpoint fields">
    <ResponseField name="provider" type="string" required>
      Provider identifier. Use it together with `endpoint` to inspect or run.
    </ResponseField>

    <ResponseField name="provider_label" type="string" required>
      Provider display name.
    </ResponseField>

    <ResponseField name="endpoint" type="string" required>
      Endpoint identifier, such as `/apify/instagram-post-scraper`.
    </ResponseField>

    <ResponseField name="name" type="string" required>
      Endpoint display name.
    </ResponseField>

    <ResponseField name="description" type="string" required>
      What the Endpoint retrieves.
    </ResponseField>

    <ResponseField name="category" type="string" required>
      Category identifier, such as `instagram`.
    </ResponseField>

    <ResponseField name="category_label" type="string" required>
      Category display name, such as `Instagram`.
    </ResponseField>

    <ResponseField name="price_usd" type="string" required>
      Display price in USD, as a decimal string. Read with `price_unit`;
      inspect for the full charge rules.
    </ResponseField>

    <ResponseField name="price_unit" type="string" required>
      `run`, `result`, or `1M input tokens`.
    </ResponseField>

    <ResponseField name="price_cap_usd" type="string">
      Maximum charge per Run, when included for a metered Price.
    </ResponseField>
  </Expandable>
</ResponseField>

## Caching and status codes

Reuse the response according to `Cache-Control`. You can send its `ETag` in an
`If-None-Match` header on your next request.

| Status | Meaning |
| - | - |
| `200` | The public list as JSON. |
| `304` | The ETag matches. Reuse your saved response; this response has no body. |
| `503` | No list is available. Retry later; the error code is `service_unavailable`. |

The server can return the previous list while it refreshes or if a refresh
fails. An entry in this list does not guarantee access under your Key's Policy.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.