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

# List works

> Get a list of scholarly works with optional filtering, searching, sorting, and pagination. Works include journal articles, books, datasets, theses, and more.



## OpenAPI

````yaml /api-reference/openapi.json get /works
openapi: 3.1.0
info:
  title: OpenAlex API
  description: >-
    The OpenAlex API provides access to a comprehensive catalog of scholarly
    works, authors, sources, institutions, topics, keywords, publishers, and
    funders. OpenAlex indexes over 250 million scholarly works.
  version: 1.0.0
  contact:
    name: OpenAlex Support
    email: support@openalex.org
    url: https://openalex.org
  license:
    name: CC0
    url: https://creativecommons.org/publicdomain/zero/1.0/
servers:
  - url: https://api.openalex.org
    description: OpenAlex Production API
security:
  - apiKey: []
tags:
  - name: Works
    description: Scholarly documents like journal articles, books, datasets, and theses
  - name: Authors
    description: People who create scholarly works
  - name: Sources
    description: Journals, repositories, and other venues where works are hosted
  - name: Institutions
    description: Universities, research organizations, and other affiliations
  - name: Topics
    description: Research topics automatically assigned to works
  - name: Keywords
    description: Short phrases identified from works' topics
  - name: Publishers
    description: Companies and organizations that publish scholarly works
  - name: Funders
    description: Organizations that fund research
  - name: Autocomplete
    description: Fast typeahead search for any entity type
  - name: Domains
    description: Top-level categories in the topic hierarchy (4 total)
  - name: Fields
    description: Second-level categories in the topic hierarchy (26 total)
  - name: Subfields
    description: Third-level categories in the topic hierarchy (254 total)
  - name: SDGs
    description: UN Sustainable Development Goals (17 total)
  - name: Countries
    description: Geographic countries for filtering research by location
  - name: Continents
    description: Geographic continents (7 total)
  - name: Languages
    description: Languages of scholarly works
  - name: Awards
    description: Research grants and funding awards
  - name: Concepts
    description: Legacy taxonomy of research areas (deprecated - use Topics instead)
  - name: Work Types
    description: Types of scholarly works (article, book, dataset, etc.)
  - name: Source Types
    description: Types of sources (journal, repository, conference, etc.)
  - name: Institution Types
    description: Types of institutions (education, healthcare, company, etc.)
  - name: Licenses
    description: Open access licenses (CC BY, CC BY-SA, etc.)
paths:
  /works:
    get:
      tags:
        - Works
      summary: List works
      description: >-
        Get a list of scholarly works with optional filtering, searching,
        sorting, and pagination. Works include journal articles, books,
        datasets, theses, and more.
      operationId: listWorks
      parameters:
        - name: filter
          in: query
          description: >-
            Filter works. Examples: `publication_year:2023`, `type:article`,
            `open_access.is_oa:true`, `author.id:A5023888391`,
            `institutions.id:I27837315`, `cited_by_count:>100` See [all Work
            fields](/api-reference/works#available-filter-sort-and-group_by-fields).
          schema:
            type: string
        - name: sort
          in: query
          description: >-
            Sort by: `cited_by_count`, `publication_date`, `relevance_score`
            (with search). Prefix with `-` for descending. See [all Work
            fields](/api-reference/works#available-filter-sort-and-group_by-fields).
          schema:
            type: string
        - name: group_by
          in: query
          description: >-
            Group by: `publication_year`, `type`, `open_access.is_oa`,
            `authorships.institutions.country_code` See [all Work
            fields](/api-reference/works#available-filter-sort-and-group_by-fields).
          schema:
            type: string
        - $ref: '#/components/parameters/search'
        - $ref: '#/components/parameters/per_page'
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/cursor'
        - $ref: '#/components/parameters/sample'
        - $ref: '#/components/parameters/select'
        - $ref: '#/components/parameters/api_key'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WorksListResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  parameters:
    search:
      name: search
      in: query
      description: >-
        Full-text search across titles, abstracts, and other text fields.
        Example: `search=machine learning`
      schema:
        type: string
    per_page:
      name: per_page
      in: query
      description: Number of results per page (1-100, default 25)
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 25
    page:
      name: page
      in: query
      description: >-
        Page number for pagination. Use cursor for deep pagination beyond 10,000
        results.
      schema:
        type: integer
        minimum: 1
    cursor:
      name: cursor
      in: query
      description: >-
        Cursor for deep pagination. Use `cursor=*` to start, then use the
        `next_cursor` from the response.
      schema:
        type: string
    sample:
      name: sample
      in: query
      description: >-
        Return a random sample of N results (max 10,000). Cannot be used with
        sort or page.
      schema:
        type: integer
        maximum: 10000
    select:
      name: select
      in: query
      description: >-
        Comma-separated list of fields to return. Reduces response size.
        Example: `select=id,display_name,cited_by_count`
      schema:
        type: string
    api_key:
      name: api_key
      in: query
      description: >-
        Your OpenAlex API key (required). Get a free key at
        https://openalex.org/settings/api
      required: true
      schema:
        type: string
  schemas:
    WorksListResponse:
      type: object
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        results:
          type: array
          items:
            $ref: '#/components/schemas/Work'
        group_by:
          type: array
          items:
            $ref: '#/components/schemas/GroupByResult'
    Meta:
      type: object
      description: Metadata about the query results
      properties:
        count:
          type: integer
          description: Total number of results matching the query
        db_response_time_ms:
          type: integer
          description: Database response time in milliseconds
        page:
          type: integer
          description: Current page number
        per_page:
          type: integer
          description: Number of results per page
        next_cursor:
          type: string
          description: Cursor for the next page (when using cursor pagination)
        groups_count:
          type: integer
          nullable: true
          description: Number of groups when using group_by
        cost_usd:
          type: number
          description: Cost of this request in USD
    Work:
      type: object
      description: A scholarly document (article, book, dataset, thesis, etc.)
      properties:
        id:
          type: string
          description: The OpenAlex ID for this work.
          example: https://openalex.org/W2741809807
        doi:
          type: string
          nullable: true
          description: The DOI for the work. This is the Canonical External ID for works.
          example: https://doi.org/10.7717/peerj.4375
        title:
          type: string
          nullable: true
          description: The title of this work.
        display_name:
          type: string
          description: Same as `title`. Included for consistency with other entities.
        publication_year:
          type: integer
          nullable: true
          description: The year this work was published.
        publication_date:
          type: string
          format: date
          nullable: true
          description: The day when this work was published (ISO 8601 format).
        type:
          type: string
          description: >-
            The type of the work. Common values: `article`, `book`, `dataset`,
            `preprint`, `dissertation`, `book-chapter`.
        language:
          type: string
          nullable: true
          description: '[Language](/api-reference/languages) in ISO 639-1 format'
        cited_by_count:
          type: integer
          description: The number of citations to this work.
        is_retracted:
          type: boolean
          description: >-
            True if this work has been retracted (from Retraction Watch
            database).
        is_paratext:
          type: boolean
          description: >-
            True if this work is paratext (e.g., front cover, table of
            contents).
        primary_location:
          $ref: '#/components/schemas/Location'
          description: >-
            A Location object with the primary location of this work (closest to
            the version of record). Includes `source`, `landing_page_url`,
            `pdf_url`, `is_oa`, `license`, and `version`.
        locations:
          type: array
          items:
            $ref: '#/components/schemas/Location'
          description: >-
            List of Location objects describing all unique places where this
            work lives.
        best_oa_location:
          $ref: '#/components/schemas/Location'
          description: >-
            A Location object with the best available open access location for
            this work.
        open_access:
          $ref: '#/components/schemas/OpenAccess'
          description: 'Information about the access status of this work:'
        authorships:
          type: array
          items:
            $ref: '#/components/schemas/Authorship'
          description: >-
            List of Authorship objects representing authors and their
            institutions. Limited to the first 100 authors. Each authorship
            includes `author`, `institutions`, `author_position`,
            `is_corresponding`, and other fields.
        ids:
          type: object
          description: 'External identifiers: `openalex`, `doi`, `mag`, `pmid`, `pmcid`.'
          properties:
            openalex:
              type: string
            doi:
              type: string
            mag:
              type: integer
            pmid:
              type: string
            pmcid:
              type: string
        biblio:
          type: object
          description: 'Bibliographic info: `volume`, `issue`, `first_page`, `last_page`.'
          properties:
            volume:
              type: string
              nullable: true
            issue:
              type: string
              nullable: true
            first_page:
              type: string
              nullable: true
            last_page:
              type: string
              nullable: true
        abstract_inverted_index:
          type: object
          nullable: true
          description: >-
            The abstract as an inverted index (word positions). OpenAlex doesn't
            include plaintext abstracts due to legal constraints. Use the
            `has_abstract` filter to get works with or without abstracts.
        referenced_works:
          type: array
          items:
            type: string
          description: OpenAlex IDs for works that this work cites.
        referenced_works_count:
          type: integer
          description: The number of works that this work cites.
        related_works:
          type: array
          items:
            type: string
          description: >-
            OpenAlex IDs for works related to this work (computed
            algorithmically).
        topics:
          type: array
          items:
            $ref: '#/components/schemas/WorkTopic'
          description: List of up to 3 Topics for this work, each with a relevance score.
        primary_topic:
          $ref: '#/components/schemas/WorkTopic'
          description: >-
            The top ranked Topic for this work, with `id`, `display_name`,
            `score`, and hierarchy (`subfield`, `field`, `domain`).
        keywords:
          type: array
          items:
            $ref: '#/components/schemas/WorkKeyword'
          description: >-
            Keywords identified based on the work's topics, with relevance
            scores.
        funders:
          type: array
          items:
            $ref: '#/components/schemas/DehydratedFunder'
          description: Dehydrated Funder objects representing the funders of this work.
        awards:
          type: array
          items:
            $ref: '#/components/schemas/Award'
          description: >-
            Dehydrated Award objects representing grants associated with this
            work.
        fwci:
          type: number
          nullable: true
          description: >-
            Field-weighted Citation Impact, calculated as citations received /
            citations expected.
        citation_normalized_percentile:
          type: object
          nullable: true
          properties:
            value:
              type: number
            is_in_top_1_percent:
              type: boolean
            is_in_top_10_percent:
              type: boolean
          description: >-
            Percentile of citation count normalized by work type, year, and
            subfield. Includes `value`, `is_in_top_1_percent`,
            `is_in_top_10_percent`.
        cited_by_percentile_year:
          type: object
          nullable: true
          properties:
            min:
              type: integer
            max:
              type: integer
          description: >-
            Percentile rank compared to other works published in the same year.
            Contains `min` and `max`.
        counts_by_year:
          type: array
          items:
            type: object
            properties:
              year:
                type: integer
              cited_by_count:
                type: integer
          description: '`cited_by_count` for each of the last ten years.'
        sustainable_development_goals:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              display_name:
                type: string
              score:
                type: number
          description: >-
            UN Sustainable Development Goals relevant to this work, with
            prediction scores.
        mesh:
          type: array
          items:
            type: object
            properties:
              descriptor_ui:
                type: string
              descriptor_name:
                type: string
              qualifier_ui:
                type: string
              qualifier_name:
                type: string
              is_major_topic:
                type: boolean
          description: MeSH tags for works found in PubMed.
        indexed_in:
          type: array
          items:
            type: string
          description: >-
            Sources this work is indexed in. Values: `arxiv`, `crossref`,
            `doaj`, `pubmed`.
        has_content:
          type: object
          nullable: true
          properties:
            pdf:
              type: boolean
            grobid_xml:
              type: boolean
          description: 'Information about downloadable full-text content:'
        content_url:
          type: string
          nullable: true
          description: >-
            URL for downloading full-text content. Only present when
            `has_content.pdf` or `has_content.grobid_xml` is true.
        created_date:
          type: string
          format: date
          description: When this work was added to OpenAlex (ISO 8601 date).
        updated_date:
          type: string
          format: date-time
          description: When this work was last updated (ISO 8601 datetime).
    GroupByResult:
      type: object
      properties:
        key:
          type: string
          description: The group key value
        key_display_name:
          type: string
          description: Human-readable name for the key
        count:
          type: integer
          description: Number of results in this group
    Error:
      type: object
      properties:
        error:
          type: string
          description: Error type
        message:
          type: string
          description: Human-readable error message
    Location:
      type: object
      description: Where a work is hosted
      properties:
        is_oa:
          type: boolean
          description: Whether this location provides open access
        landing_page_url:
          type: string
          nullable: true
          description: URL to the landing page
        pdf_url:
          type: string
          nullable: true
          description: Direct URL to PDF
        source:
          $ref: '#/components/schemas/DehydratedSource'
          description: >-
            [Dehydrated
            source](/api-reference/sources#the-dehydratedsource-object)
        license:
          type: string
          nullable: true
          description: The [license](/api-reference/licenses) (e.g., cc-by)
        license_id:
          type: string
          nullable: true
        version:
          type: string
          nullable: true
          enum:
            - publishedVersion
            - acceptedVersion
            - submittedVersion
          description: Version of the work at this location
        is_accepted:
          type: boolean
        is_published:
          type: boolean
    OpenAccess:
      type: object
      description: Open access information
      properties:
        is_oa:
          type: boolean
          description: Whether this work is open access
        oa_status:
          type: string
          enum:
            - diamond
            - gold
            - hybrid
            - bronze
            - green
            - closed
          description: Open access status
        oa_url:
          type: string
          nullable: true
          description: Best open access URL
        any_repository_has_fulltext:
          type: boolean
          description: Whether any repository has the full text
    Authorship:
      type: object
      description: Author and their affiliation for a work
      properties:
        author_position:
          type: string
          enum:
            - first
            - middle
            - last
          description: Position in author list
        author:
          $ref: '#/components/schemas/DehydratedAuthor'
          description: >-
            [Dehydrated
            author](/api-reference/authors#the-dehydratedauthor-object)
        institutions:
          type: array
          items:
            $ref: '#/components/schemas/DehydratedInstitution'
          description: >-
            [Dehydrated
            institutions](/api-reference/institutions#the-dehydratedinstitution-object)
        countries:
          type: array
          items:
            type: string
          description: Country codes of affiliations
        is_corresponding:
          type: boolean
          description: Whether this is the corresponding author
        raw_author_name:
          type: string
          description: Author name as it appears in the work
        raw_affiliation_strings:
          type: array
          items:
            type: string
    WorkTopic:
      type: object
      properties:
        id:
          type: string
        display_name:
          type: string
        score:
          type: number
        subfield:
          type: object
          properties:
            id:
              type: string
            display_name:
              type: string
          description: The parent [subfield](/api-reference/subfields)
        field:
          type: object
          properties:
            id:
              type: string
            display_name:
              type: string
          description: The parent [field](/api-reference/fields)
        domain:
          type: object
          properties:
            id:
              type: string
            display_name:
              type: string
          description: The parent [domain](/api-reference/domains)
    WorkKeyword:
      type: object
      properties:
        id:
          type: string
        display_name:
          type: string
        score:
          type: number
    DehydratedFunder:
      type: object
      properties:
        id:
          type: string
        display_name:
          type: string
        ror:
          type: string
          nullable: true
      description: >-
        [Dehydrated Funder](/api-reference/funders) — reduced-field version used
        in nested contexts
    Award:
      type: object
      properties:
        id:
          type: string
        display_name:
          type: string
        funder_award_id:
          type: string
        funder_id:
          type: string
        funder_display_name:
          type: string
        doi:
          type: string
          nullable: true
    DehydratedSource:
      type: object
      description: >-
        [Dehydrated Source](/api-reference/sources#the-dehydratedsource-object)
        — reduced-field version used in nested contexts
      properties:
        id:
          type: string
        display_name:
          type: string
        issn_l:
          type: string
          nullable: true
        issn:
          type: array
          items:
            type: string
          nullable: true
        is_oa:
          type: boolean
        is_in_doaj:
          type: boolean
        is_core:
          type: boolean
        host_organization:
          type: string
          nullable: true
        host_organization_name:
          type: string
          nullable: true
        host_organization_lineage:
          type: array
          items:
            type: string
        type:
          type: string
          description: The [source type](/api-reference/source-types)
    DehydratedAuthor:
      type: object
      description: >-
        [Dehydrated Author](/api-reference/authors#the-dehydratedauthor-object)
        — reduced-field version used in nested contexts
      properties:
        id:
          type: string
        display_name:
          type: string
        orcid:
          type: string
          nullable: true
    DehydratedInstitution:
      type: object
      description: >-
        [Dehydrated
        Institution](/api-reference/institutions#the-dehydratedinstitution-object)
        — reduced-field version used in nested contexts
      properties:
        id:
          type: string
        display_name:
          type: string
        ror:
          type: string
          nullable: true
        country_code:
          type: string
          nullable: true
          description: '[Country](/api-reference/countries) code'
        type:
          type: string
          description: The [institution type](/api-reference/institution-types)
        lineage:
          type: array
          items:
            type: string
  responses:
    BadRequest:
      description: Bad request - invalid parameters
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Forbidden:
      description: Forbidden - invalid ID format
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    apiKey:
      type: apiKey
      in: query
      name: api_key
      description: >-
        Your OpenAlex API key. Get a free key at
        https://openalex.org/settings/api

````