BYTETOOLS

gnomAD API

Free gnomAD GraphQL API with no key: population allele frequencies, variant constraint and gene data from 800,000+ exomes and genomes. Tested POST example and live response.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-21

What is the gnomAD API?

The gnomAD API is a free, key-free GraphQL endpoint over the Genome Aggregation Database. It serves population allele frequencies, per-gene constraint metrics and variant annotations aggregated from hundreds of thousands of exome and genome sequences.

gnomAD is the reference dataset for how common a genetic variant is in the general population, and that single fact does most of the work in clinical variant interpretation: a variant seen in thousands of apparently healthy people is very unlikely to cause a severe dominant disease. The API is GraphQL rather than REST, which suits the data well — you declare the exact shape you want in one POST and the server returns precisely that, instead of you fetching a huge variant record to read two fields.

Be aware of what the numbers do and do not mean. gnomAD is a convenience sample, not a population survey: its ancestry groups are unevenly represented, its participants were recruited for various disease studies with severe paediatric cases excluded, and allele counts in small subgroups are noisy. The `dataset` argument matters too, because frequencies differ between gnomAD versions and between exome and genome call sets. The maintainers also treat the public API as a browser backend rather than a bulk-data service — for anything at scale, download the release files instead.

Quick facts

Base URL
https://gnomad.broadinstitute.org/api
Authentication
No API key or account. gnomAD data is released for free use without restriction, including commercial use, with citation requested.
Rate limit
Unpublished, and enforced. The API is intended to serve the gnomAD browser, so heavy scripted use will be throttled — download the release VCFs or the Hail tables for bulk analysis.
Pricing
Free. gnomAD data carries no usage restrictions.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the gnomAD API

Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.

1. Query gene coordinates for PCSK9 with GraphQL

POST https://gnomad.broadinstitute.org/api

curl
curl -X POST 'https://gnomad.broadinstitute.org/api' \
  -H 'Content-Type: application/json' \
  -d '{"query":"{gene(gene_symbol:\"PCSK9\",reference_genome:GRCh38){gene_id symbol chrom start stop}}"}'
JavaScript (fetch)
const res = await fetch("https://gnomad.broadinstitute.org/api", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({"query":"{gene(gene_symbol:\"PCSK9\",reference_genome:GRCh38){gene_id symbol chrom start stop}}"}),
});
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

headers = {
    "Content-Type": "application/json",
}

payload = {"query":"{gene(gene_symbol:\"PCSK9\",reference_genome:GRCh38){gene_id symbol chrom start stop}}"}

res = requests.post("https://gnomad.broadinstitute.org/api", headers=headers, json=payload, timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "data": {
    "gene": {
      "gene_id": "ENSG00000169174",
      "symbol": "PCSK9",
      "chrom": "1",
      "start": 55039447,
      "stop": 55064852
    }
  }
}

Parameters

ParameterTypeRequiredDescription
querybody fieldRequiredThe GraphQL query document. Sent as JSON in a POST body with `Content-Type: application/json`. {gene(gene_symbol:"PCSK9",reference_genome:GRCh38){gene_id symbol}}
variablesbody fieldOptionalGraphQL variables object, if your query is parameterised. {"symbol":"PCSK9"}
reference_genomeGraphQL argumentRequired`GRCh37` or `GRCh38`. Coordinates differ between builds, so this is never optional in practice. GRCh38
datasetGraphQL argumentOptionalWhich gnomAD release and call set to query, such as `gnomad_r4`. Frequencies differ meaningfully between datasets. gnomad_r4

Response fields

dataobject
GraphQL result envelope. Its shape mirrors your query exactly.
data.gene.gene_idstring
Ensembl gene identifier for the matched gene.
data.gene.chrom / start / stopstring / integer
Genomic coordinates in the reference genome you requested. These are not comparable across builds.
errorsarray
Present alongside `data` when part of a query fails. GraphQL returns HTTP 200 even when this is populated — check for it explicitly.

What you can build with the gnomAD API

  • Look up how frequently a variant occurs in the general population
  • Fetch per-gene constraint metrics such as pLI and LOEUF
  • Resolve a gene symbol to its coordinates in GRCh37 or GRCh38
  • Add population frequency context to a variant annotation pipeline
  • Compare allele frequencies across gnomAD ancestry groups

Common errors and how to fix them

200 with an `errors` array

GraphQL reports query errors inside a successful HTTP response.

Fix: Never rely on the status code alone. Check for `errors` on every response before reading `data`.

400

Malformed GraphQL document or a missing required argument.

Fix: `reference_genome` is required on most fields. Prototype the query in the gnomAD browser's GraphQL playground first.

429

Rate limited.

Fix: The API backs the browser, not bulk pipelines. Cache results, and for large analyses download the release files from the gnomAD downloads page.

Null gene

The symbol did not match in the requested reference genome.

Fix: Symbols change; query by Ensembl gene id where you can, and confirm the build — a gene present in GRCh38 may be absent from the GRCh37 call set.

gnomAD API — frequently asked questions

Is the gnomAD API free?

Yes, free and key-free, and the underlying data is released without usage restrictions including for commercial work. The practical constraint is rate limiting, not licensing.

Does a variant being absent from gnomAD mean it is pathogenic?

No. Absence means it was not observed in the aggregated cohorts, which for a rare variant is unsurprising and carries only weak evidence. Population frequency is one input among many in variant interpretation, and gnomAD's own documentation is emphatic that its data should not be used alone to make clinical calls.

Why does gnomAD return HTTP 200 for a failed query?

Because it is GraphQL, where transport success and query success are separate. A query error appears as an `errors` array alongside a partial or null `data` object, in a response that is still HTTP 200.

Can I use the API to download all variants in a gene?

You can for a small gene, but you should not make a habit of it. The API exists to serve the browser; bulk work belongs on the downloadable VCF and Hail table releases, which are complete and much faster.

Tools that pair with this API

gnomAD is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.