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

# List publishers

> Query and list publishing organizations with filtering, sorting, and pagination.

Retrieves a paginated list of publishers with filtering and sorting capabilities.

### Query Parameters

<ParamField query="page" default="1" type="integer">
  Page number for pagination. Default is `1`.
</ParamField>

<ParamField query="per_page" default="25" type="integer">
  Results per page. Allowed values: `10`, `25`, `50`, `100`.
</ParamField>

<ParamField query="filter" type="string">
  Filter expression (e.g. `country_code:NL`).
</ParamField>

<ParamField query="sort" type="string">
  Sorting parameter (e.g. `outputs_count:desc`, `cited_by_count:desc`).
</ParamField>

### Response Fields

<ResponseField name="meta" type="object" required>
  Pagination metadata.

  <Expandable title="meta attributes">
    <ResponseField name="count" type="integer">Total matching records count.</ResponseField>
    <ResponseField name="page" type="integer">Current page number.</ResponseField>
    <ResponseField name="per_page" type="integer">Items per page.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="results" type="array" required>
  Array of publisher records.

  <Expandable title="results item attributes">
    <ResponseField name="id" type="string">Publisher ID (`HX_P...`).</ResponseField>
    <ResponseField name="name" type="string">Publisher display name.</ResponseField>
    <ResponseField name="alternate_titles" type="array">Alternative titles array.</ResponseField>
    <ResponseField name="hierarchy_level" type="integer">Hierarchy depth level.</ResponseField>
    <ResponseField name="parent_publisher" type="object">Parent publisher metadata.</ResponseField>

    <ResponseField name="countries" type="array">
      Countries array.

      <Expandable title="countries attributes">
        <ResponseField name="code" type="string">ISO country code (e.g. `"NL"`).</ResponseField>
        <ResponseField name="name" type="string">Country display name.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="homepage_url" type="string">Homepage URL.</ResponseField>
    <ResponseField name="image_url" type="string">Image logo URL.</ResponseField>
    <ResponseField name="image_thumbnail_url" type="string">Thumbnail logo URL.</ResponseField>
    <ResponseField name="outputs_count" type="integer">Outputs count.</ResponseField>
    <ResponseField name="cited_by_count" type="integer">Citations count.</ResponseField>

    <ResponseField name="summary_stats" type="object">
      Aggregated impact metrics.

      <Expandable title="summary_stats attributes">
        <ResponseField name="2yr_mean_citedness" type="number">Two-year mean citation rate.</ResponseField>
        <ResponseField name="h_index" type="integer">Calculated h-index score.</ResponseField>
        <ResponseField name="i10_index" type="integer">Calculated i10-index score.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="ids" type="object">
      External identifiers mapping.

      <Expandable title="ids attributes">
        <ResponseField name="ror" type="string">ROR URL.</ResponseField>
        <ResponseField name="wikidata" type="string">Wikidata entity URL.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="counts_by_year" type="array">
      Yearly outputs and citations breakdown.

      <Expandable title="counts_by_year attributes">
        <ResponseField name="year" type="integer">Year number.</ResponseField>
        <ResponseField name="outputs_count" type="integer">Outputs count in year.</ResponseField>
        <ResponseField name="oa_outputs_count" type="integer">Open Access outputs count in year.</ResponseField>
        <ResponseField name="cited_by_count" type="integer">Citations count in year.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="roles" type="array">
      Roles array.

      <Expandable title="roles attributes">
        <ResponseField name="role" type="string">Role type (`funder`, `institution`, `publisher`).</ResponseField>
        <ResponseField name="id" type="string">Entity ID.</ResponseField>
        <ResponseField name="outputs_count" type="integer">Outputs count for role.</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="updated_date" type="string">ISO update date string.</ResponseField>
    <ResponseField name="created_date" type="string">ISO creation date string.</ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://api.hexagraph.in/publishers?sort=outputs_count:desc&per_page=25"
  ```

  ```javascript JavaScript theme={null}
  fetch("https://api.hexagraph.in/publishers?sort=outputs_count:desc&per_page=25")
    .then(response => response.json())
    .then(data => console.log(data));
  ```

  ```python Python theme={null}
  import requests

  response = requests.get("https://api.hexagraph.in/publishers", params={"sort": "outputs_count:desc", "per_page": 25})
  print(response.json())
  ```
</RequestExample>

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "meta": {
      "count": 10703,
      "page": 1,
      "per_page": 25
    },
    "results": [
      {
        "id": "HX_P4310320990",
        "name": "Elsevier BV",
        "alternate_titles": [
          "Elsevier",
          "elsevier.com",
          "Elsevier Science",
          "Uitg. Elsevier",
          "السفير",
          "السوير",
          "انتشارات الزویر",
          "لودویک السفیر",
          "爱思唯尔"
        ],
        "hierarchy_level": 0,
        "parent_publisher": null,
        "countries": [
          {
            "code": "NL",
            "name": null
          }
        ],
        "homepage_url": "https://www.relx.com",
        "image_url": "https://commons.wikimedia.org/w/index.php?title=Special:Redirect/file/Elsevier.svg",
        "image_thumbnail_url": "https://commons.wikimedia.org/w/index.php?title=Special:Redirect/file/Elsevier.svg&width=300",
        "outputs_count": 24185686,
        "cited_by_count": 646480324,
        "summary_stats": {
          "2yr_mean_citedness": 4.319272176423483,
          "h_index": 2891,
          "i10_index": 10413621
        },
        "ids": {
          "ror": "https://ror.org/02scfj030",
          "wikidata": "https://www.wikidata.org/entity/Q746413"
        },
        "counts_by_year": [
          {
            "year": 2026,
            "outputs_count": 661865,
            "oa_outputs_count": 0,
            "cited_by_count": 206628
          },
          {
            "year": 2025,
            "outputs_count": 1108363,
            "oa_outputs_count": 0,
            "cited_by_count": 3367431
          },
          {
            "year": 2024,
            "outputs_count": 1019513,
            "oa_outputs_count": 0,
            "cited_by_count": 8475596
          }
        ],
        "roles": [
          {
            "role": "funder",
            "id": "HX_F4320308305",
            "outputs_count": 162
          },
          {
            "role": "institution",
            "id": "HX_I1318003438",
            "outputs_count": 7800
          },
          {
            "role": "institution",
            "id": "HX_I4210160603",
            "outputs_count": 652
          },
          {
            "role": "publisher",
            "id": "HX_P4310320990",
            "outputs_count": 24185686
          }
        ],
        "updated_date": "2026-08-05T04:01:49",
        "created_date": "2023-01-01T00:00:00"
      }
    ]
  }
  ```

  ```json 400 Bad Request theme={null}
  {
    "statusCode": 400,
    "message": "Bad Request - Invalid query parameters",
    "error": "Bad Request"
  }
  ```

  ```json 429 Rate Limit Exceeded theme={null}
  {
    "statusCode": 429,
    "message": "Rate limit exceeded. Maximum 30 requests per minute.",
    "error": "Too Many Requests"
  }
  ```
</ResponseExample>
