Open Targets Genetics Documentation
  • Introduction
  • Release notes
  • Change log
  • FAQs
  • Future Plans
  • Licence
  • Citation
  • Terms of Use
  • Our Approach
    • Overview
    • Assigning Variants to Disease (V2D)
    • Assigning Variants to Genes (V2G)
    • Prioritising causal genes at GWAS loci (L2G)
    • Colocalisation analysis
    • Data Sources
      • Genetic Variation
        • FinnGen
      • Molecular Traits
        • Splice QTLs
      • Others
  • How To Use Open Targets Genetics starting with
    • A Gene
    • A Study (Trait)
    • Multiple Studies
    • A Variant
    • Introducing the Locus Plot
  • Technical Pipeline
    • What Technologies Do We Use?
    • GitHub Repositories
    • Pipeline schematic overview
  • Meetings
    • ESHG Workshop 2019
    • ASHG Workshop 2018
  • Data access
    • Data Download
    • GraphQL API
Powered by GitBook
On this page
  • Available endpoints
  • Sample scripts
  • Tutorials and how-to guides
  1. Data access

GraphQL API

PreviousData Download

Last updated 2 years ago

The is a GraphQL API that powers the user interface and that supports language-agnostic access to our data.

Compared to a REST API, our GraphQL API offers five key benefits:

  1. You can construct a query that returns only the fields that you need

  2. You can build graphical queries that traverse a data graph through resolvable entities and this reduces the need for multiple queries

  3. You can access the with built-in documentation to build your query and run it in real-time

  4. You can view the that shows the available fields for each object along with a description and data type attribute

  5. You only have to use POST requests with a query string and variables object

Available endpoints

The base URL endpoint for the Genetics Portal GraphQL API is:

https://api.genetics.opentargets.org/graphql

Our GraphQL API supports queries for a single variant, gene, study, or study-variant pair. For more systematic queries (e.g. for multiple variants), please use or our Google BigQuery instance - .

GraphQL's and constructs, you can also access the data using any programming language that supports HTTP POST requests. While this is a valid approach, we discourage users from repeatedly querying the GraphQL API one entity at a time. Instead, our comprehensive provide a simpler and more performant strategy to achieve the same result.

Sample scripts

Below is a sample script in Python for the sample query:

#!/usr/bin/env python3

# Import relevant libraries for HTTP request and JSON formatting
import requests
import json

# Set study_id and variant_id variables
study_id = "GCST009240_9"
variant_id = "1_55052794_A_G"

# Build query string
query_string = """
  query genePrioritisationUsingL2G($myVariantId: String!, $myStudyId: String! ){
    studyLocus2GeneTable(studyId: $myStudyId, variantId: $myVariantId){
      rows {
        gene {
          symbol
          id
        }
        yProbaModel
        yProbaDistance
        yProbaInteraction
        yProbaMolecularQTL
        yProbaPathogenicity
        hasColoc
        distanceToLocus
      }
    }
  }
"""

# Set variables object of arguments to be passed to endpoint
variables = {"myVariantId": variant_id, "myStudyId": study_id}

# Set base URL of Genetics Portal GraphQL API endpoint
base_url = "https://api.genetics.opentargets.org/graphql"

# Perform POST request and check status code of response
r = requests.post(base_url, json={"query": query_string, "variables": variables})
print(r.status_code)

# Transform API response into JSON 
api_response_as_json = json.loads(r.text)

# Print first element of JSON response data
print(api_response_as_json["data"]["studyLocus2GeneTable"]["rows"][0])
# Install relevant library for HTTP requests
library(httr)

# Set study_id and variant_id variables
study_id <- "GCST009240_9"
variant_id <- "1_55052794_A_G"

# Build query string
query_string = "
  query genePrioritisationUsingL2G($myVariantId: String!, $myStudyId: String! ){
    studyLocus2GeneTable(studyId: $myStudyId, variantId: $myVariantId){
      rows {
        gene {
          symbol
          id
        }
        yProbaModel
        yProbaDistance
        yProbaInteraction
        yProbaMolecularQTL
        yProbaPathogenicity
        hasColoc
        distanceToLocus
      }
    }
  }
"

# Set base URL of Genetics Portal GraphQL API endpoint
base_url <- "https://api.genetics.opentargets.org/graphql"

# Set variables object of arguments to be passed to endpoint
variables <- list("myStudyId" = study_id, "myVariantId" = variant_id)

# Construct POST request body object with query string and variables
post_body <- list(query = query_string, variables = variables)

# Perform POST request
r <- POST(url=base_url, body=post_body, encode='json')

# Print first entry of L2G data to RStudio console
head(content(r)$data$studyLocus2GeneTable$rows, 1)

Tutorials and how-to guides

For more information on how to use the GraphQL API and example queries based on actual use cases and research questions, check out the .

Open Targets Genetics API
GraphQL API playground
schema
our data downloads
open-targets-prod
query strings
variables object
datasets available for download
prioritised genes from study locus
Open Targets Community