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.
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 -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}}"}'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);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()){
"data": {
"gene": {
"gene_id": "ENSG00000169174",
"symbol": "PCSK9",
"chrom": "1",
"start": 55039447,
"stop": 55064852
}
}
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
query | body field | Required | The 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}} |
variables | body field | Optional | GraphQL variables object, if your query is parameterised. {"symbol":"PCSK9"} |
reference_genome | GraphQL argument | Required | `GRCh37` or `GRCh38`. Coordinates differ between builds, so this is never optional in practice. GRCh38 |
dataset | GraphQL argument | Optional | Which 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
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
JSON Path Finder
Evaluate a dot/bracket path against your JSON and list every leaf path for discovery. Free online JSON path finder that runs 100% in your browser.
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
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.