# How to Retrieve Protein Sequences from Ensembl: A Step-by-Step Guide

By the end of this guide you will be able to retrieve protein sequences from Ensembl in five different ways: through the genome browser for a single gene, through BioMart for a filtered list of hundreds of genes, through the FTP site for an entire proteome, through the REST API for scripted retrieval, and through R for analyses that need annotation and sequence in one place. You will also know how to record the Ensembl release you used, how to verify what you downloaded, and which mistakes quietly corrupt downstream analyses.

Ensembl is a good default source for protein sequences because it couples every peptide to a stable gene model on a specific genome assembly, which is what most comparative and annotation workflows actually need. Before starting, have the following on hand:

- A web browser for the genome browser and BioMart routes
- A terminal with `wget` or `curl` installed for FTP and API retrieval
- Optionally, R with Bioconductor (specifically the `ensembldb` and `AnnotationHub` packages) or Perl with the Ensembl API
- The gene names, Ensembl IDs, or genomic coordinates you care about

## What Ensembl Protein Data Actually Is

Ensembl provides complete gene annotations for all supported species, and its data are accessible through a genome browser, a Perl API, and BioMart [1]. When you request a [protein sequence](/blog/guides/protein-sequence), you are requesting a translation: the peptide encoded by one specific transcript of one specific gene on one specific assembly.

Three identifier types matter and they are frequently confused:

| Prefix | Object | Example | Notes |
|--|--|--|--|
| ENSG | Gene | ENSG00000141510 | A gene locus on the assembly. One gene can have many transcripts. |
| ENST | Transcript | ENST00000269305 | One spliced mRNA model. Not every transcript encodes a protein. |
| ENSP | Protein (translation) | ENSP00000269305 | The peptide produced by one protein-coding transcript. This is what you download. |

The species is encoded in the second part of the ID, so ENSP00000269305 belongs to human while an ID beginning ENSMUSP belongs to mouse. Identifiers can also carry a version suffix, such as ENSP00000269305.4, where the number increments when the model changes between releases.

Ensembl releases are numbered and every release re-exports its data. This matters more for proteins than most people expect. The `ensembldb` project explicitly keeps Ensembl-based annotation tied to the release it came from, precisely so that analyses remain reproducible [2]. Whenever you download sequences, write down the release number and the assembly name.

A second key point: Ensembl peptide sequences are predictions from the Ensembl annotation pipeline, not experimentally curated entries. Functional annotation of those peptides is computed with tools such as InterProScan, which sits inside the Ensembl large-scale annotation pipeline [3]. Quality control studies have documented that public databases, including Ensembl, contain incomplete and mispredicted protein sequences, especially for poorly characterized gene models [4]. Knowing the provenance helps you decide when to cross-check against a curated source such as UniProt, which is the reference [protein database](/blog/guides/protein-database) for many fields including pharmacology-oriented work [5].

Vertebrates live at the main portal. Everything else, including bacteria, protists, fungi, plants, and invertebrate metazoa, lives at Ensembl Genomes, which uses the same browser, FTP, BLAST, data warehouse, and API infrastructure [6]. Plant work, including large crop genomes such as wheat and barley, is served at plants.ensembl.org with the same interfaces. The retrieval mechanics in this article are identical across portals, so what you learn once applies everywhere.

## Method 1: Retrieve a Protein Sequence Through the Ensembl Genome Browser

This is the fastest route for one or a few genes and the natural starting point if you are learning how to use Ensembl. Older protocol-level descriptions of the browser emphasize exactly this workflow: find your gene or protein of interest, inspect the annotations, and export what you need [7].

### Step 1. Search for the gene

1. Go to the Ensembl home page.
2. Type the gene symbol (for example, TP53) or an Ensembl ID into the search box.
3. From the results list, pick the species and assembly row you want. For human you will usually choose the current GRCh38 entry. Picking the wrong assembly here is the single most common way to get a sequence that does not match your collaborators' data.

### Step 2. Navigate from the gene to the transcript

1. On the gene page, open the Transcript table tab.
2. Each protein-coding transcript row lists its protein ID (ENSP) and flags such as "canonical" or "MANE Select" for human genes. The canonical transcript is Ensembl's default representative, usually the most supported or longest coding transcript.
3. Click the protein ID of the transcript you want.

### Step 3. Export the sequence

1. On the protein page, use the Export data option in the left-hand menu.
2. Choose FASTA as the format.
3. Save the file. The output looks like this:

```
>ENSP00000269305 pep:ccds gene:ENSG00000141510 transcript:ENST00000269305
gene_biotype:protein_coding transcript_biotype:protein_coding gene_symbol:TP53
MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSP...
```

The header line is dense but useful. It ties the peptide to its gene, transcript, gene symbol, and biotype, which means your FASTA file is self-documenting.

### Step 4. Grab more than the peptide if you need it

The same export dialog offers cDNA (the spliced transcript with untranslated regions), CDS (coding sequence only), and peptide. Choose deliberately. A CDS export encodes the same amino acids as the peptide but is a nucleotide string, and analyses that expect protein input will fail on it. Orthology-focused resources built on Ensembl distinguish these explicitly, for example OrthoMaM harvests coding sequences and their translated products from Ensembl releases for mammalian phylogenomics [8].

## Method 2: Bulk Retrieval with BioMart

BioMart is Ensembl's query builder. It is the right tool when you have a list of gene identifiers, want to filter by biotype or genomic region, or need several hundred to several thousand sequences. Protocol literature on Ensembl highlights BioMart as the standard route for quick sequence export, including in disease-focused query workflows [9]. Large-scale downstream databases have been built on exactly this kind of bulk Ensembl retrieval, for instance secretome collections assembled from Ensembl alongside Swiss-Prot, TrEMBL, and RefSeq [10].

### Step-by-step BioMart walkthrough

1. From any Ensembl page, open the BioMart tool from the top menu, or go directly to the BioMart URL.
2. Under Choose Database, select Ensembl Genes.
3. Under Choose Dataset, select the species and assembly, for example Homo sapiens genes (GRCh38). For plant species, the same interface is served at the plants portal with identical steps [11].
4. Click Filters. Common choices:
   - Paste a list of gene or protein stable IDs into the ID limit box.
   - Or restrict by chromosome, band, or region.
   - Or restrict by gene biotype, for example protein_coding only.
5. Click Attributes. This panel is where most errors happen.
   - Under Sequences, select the Peptide radio button. Do not leave the default Coding sequence selected unless that is what you want.
   - Still under Sequences, tick the box that adds identifiers to the FASTA header.
   - In the GENE section, tick Gene stable ID, Transcript stable ID, and Gene name so your FASTA headers carry context.
6. Click Results in the toolbar. Review the preview, then click Export all to File and choose FASTA.

### What the output looks like

```
>ENSP00000269305|ENST00000269305|TP53
MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSP...
```

If your header attribute list differs between exports, run the same export twice with the same settings and compare. BioMart silently reorders nothing, but a changed attribute selection changes header content, which breaks scripts that parse headers by field position.

### Why BioMart over the browser

BioMart evaluates your entire filtered request server-side and returns one file. It also respects the gene-to-transcript relationship, so a gene with three coding transcripts yields three peptide records. Whether you want all three or only the canonical one is a design decision for your analysis, covered in the mistakes section below.

## Method 3: Downloading Complete Proteomes from the Ensembl FTP Site

When your project needs every protein of a species, do not iterate gene by gene. Ensembl publishes complete proteome FASTA files per release, organized by species.

### Step 1. Find the current release

The FTP root is organized by release number under `pub/release-XXX`. Substitute the current release number, which is displayed on the Ensembl home page. For concreteness, the examples below use release 114, so replace 114 with whatever is current when you work.

### Step 2. Download the peptide file

For human:

```bash
wget https://ftp.ensembl.org/pub/release-114/fasta/homo_sapiens/pep/Homo_sapiens.GRCh38.pep.all.fa.gz
```

Each species directory contains subdirectories for `cdna`, `cds`, `ncrna`, and `pep`. You want `pep` for protein sequences. The `.all` suffix means all translations are included, not just canonical ones.

For non-vertebrate species, use the Ensembl Genomes FTP, which mirrors the same structure [6]. For plants, the plants portal FTP serves crop proteomes including the polyploid wheat assembly, which required specific pipeline extensions to handle subgenomes [12].

### Step 3. Verify the download

Ensembl ships a companion MD5 checksum file. Check integrity before anything else:

```bash
wget https://ftp.ensembl.org/pub/release-114/fasta/homo_sapiens/pep/Homo_sapiens.GRCh38.pep.all.fa.gz.md5
md5sum -c Homo_sapiens.GRCh38.pep.all.fa.gz.md5
```

Expected output on success:

```
Homo_sapiens.GRCh38.pep.all.fa.gz: OK
```

Then confirm the file parses as FASTA and count the records:

```bash
zcat Homo_sapiens.GRCh38.pep.all.fa.gz | grep -c ">"
```

A number that is not a clean integer, or an error mid-stream, means a truncated download.

### Step 4. Subset the file to what you need

The full file contains peptides for all biotypes with translations. To keep only protein-coding entries, filter on the header tag:

```bash
zcat Homo_sapiens.GRCh38.pep.all.fa.gz \
  | awk '/^>/{keep = ($0 ~ /gene_biotype:protein_coding/)} keep' \
  > human_protein_coding.pep.fa
```

To collapse identical peptide sequences that come from different transcripts of the same gene, use a sequence-level deduplication tool:

```bash
seqkit rmdup -s human_protein_coding.pep.fa > human_protein_coding.uniq.fa
```

Whether you should deduplicate depends on your application. Proteomics search databases usually keep one entry per distinct sequence. Evolutionary analyses usually want one sequence per gene, and for that, orthology-aware selection (discussed below) is better than naive deduplication. Groups running large-scale similarity computation over Ensembl sequences routinely work from non-redundant protein sets for exactly this reason [13].

### Why a whole proteome beats per-gene downloads

A single proteome file is release-stamped, internally consistent, and ready for BLAST database construction with `makeblastdb`. Studies that BLAST candidate ESTs or peptides against a species' Ensembl peptide set, such as microsatellite mapping work in the zebra finch that searched the Ensembl chicken peptide database, depend on exactly this kind of complete, versioned peptide file [14].

## Method 4: The Ensembl REST API

The REST API is the right tool when retrieval is scripted, when sequences feed directly into a pipeline, or when you need one peptide at a time inside a loop. It serves the same underlying data as the browser.

### Single protein by ID

```bash
curl -H "Content-Type: text/plain" \
  "https://rest.ensembl.org/sequence/id/ENSP00000269305?content-type=text/plain"
```

Output:

```
MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSPDD...
```

The endpoint accepts ENSP, ENST, and ENSG identifiers. For a gene or transcript ID, add the `type=protein` parameter to request peptide sequence, and add `expand=1` to receive one sequence per translation rather than a single representative. FASTA output is available with `content-type=text/x-fasta`, which preserves the full header.

### Several proteins in one request

Batching with a POST saves round trips:

```bash
curl -H "Content-Type: application/json" \
  -d '{"ids": ["ENSP00000269305", "ENSP00000335575"]}' \
  "https://rest.ensembl.org/sequence/id?content-type=text/x-fasta"
```

### Python equivalent

```python
import requests

r = requests.get(
    "https://rest.ensembl.org/sequence/id/ENSP00000269305",
    headers={"Content-Type": "text/plain"},
)
print(r.text)
```

### Rate limits and etiquette

Ensembl asks that unregistered clients stay at or below roughly 33 requests per second. If you hammer the endpoint, you will receive HTTP 429 responses and temporary bans. For thousands of sequences, batch with the POST endpoint, or better, use the FTP proteome file and look up IDs locally. Identifiers with version suffixes are accepted, and requesting the versioned form guarantees you get exactly the peptide model you recorded earlier.

### When REST is the wrong tool

REST retrieves sequences by identifier. It does not do bulk filtering across a whole genome, and it is not a substitute for a local proteome file in a high-throughput pipeline. AlphaFold DB, whose predicted structures are now integrated with Ensembl identifiers among other primary resources, distributes bulk access through FTP and cloud endpoints for the same reason: identifier-keyed bulk data belongs in flat files, not per-item web requests [15].

## Method 5: Programmatic Access in R and Perl

Two programmatic routes cover most specialist needs.

### R with ensembldb

The Bioconductor package `ensembldb` retrieves and stores Ensembl-based annotation, including transcripts, exons, proteins, and their coordinate mappings, and deliberately pins everything to a specific Ensembl release [2]. Premade database packages for common genomes and releases are available through AnnotationHub.

```r
library(AnnotationHub)
ah <- AnnotationHub()
hits <- query(ah, c("EnsDb", "Homo sapiens"))
edb <- hits[[13]]

p <- proteins(edb, filter = GenenameFilter("TP53"))
head(p$protein_id)
p$protein_sequence[[13]]
```

The `proteins()` function returns protein identifiers and their peptide sequences in one call, with gene and transcript metadata alongside. Because the underlying database is release-locked, your script documents its own provenance, which is a major reproducibility win over ad hoc downloads [2].

### Perl with the Ensembl API

The Perl API talks directly to Ensembl's public database servers:

```perl
use Bio::EnsEMBL::Registry;
my $reg = "Bio::EnsEMBL::Registry";
$reg->load_registry_from_db(
    -host => "ensembldb.ensembl.org",
    -user => "anonymous"
);

my $ta = $reg->get_adaptor("human", "core", "translation");
my $tr = $ta->fetch_by_stable_id("ENSP00000269305");
print $tr->seq->seq, "\n";
```

Use the API when you need objects and their relationships (transcript to translation to exon coordinates) rather than flat sequences.

## Choosing the Right Retrieval Method

![Decision path asking how many sequences you need and whether you want annotation, leading to browser, BioMart, FTP, REST or R and Perl routes.](/article-images/illustrations/ensembl-protein-sequence-download-method-choice.webp)

| Method | Best for | Typical scale | Output |
|--|--|--|--|
| Genome browser | One gene, quick inspection, manual checks | 1 to 10 sequences | FASTA per selection |
| BioMart | Filtered gene lists, custom FASTA headers | 10s to 1000s | Single FASTA file |
| FTP | Whole proteomes, BLAST database builds | Entire species | Full FASTA plus checksums |
| REST API | Scripted, per-ID retrieval inside pipelines | 1s to 100s per run | Text or FASTA per request |
| R (`ensembldb`) or Perl API | Sequence plus annotation in one analysis | Any, release-locked | R objects or Perl objects |

A practical rule: browser for looking, BioMart for lists, FTP for genomes, REST for scripts, and the APIs when sequence and annotation must travel together.

## A Complete Worked Example: TP53, End to End

Here is the whole workflow for one gene, from name to verified FASTA.

1. Search TP53 on the main Ensembl portal. Select the human entry on GRCh38.
2. On the gene page, note the gene ID ENSG00000141510. Open the Transcript table and identify the canonical protein-coding transcript and its protein ID, ENSP00000269305.
3. Fetch the peptide through REST:

```bash
curl -H "Content-Type: text/plain" \
  "https://rest.ensembl.org/sequence/id/ENSP00000269305?content-type=text/plain" > tp53_peptide.fa
```

4. Verify the length. The canonical human TP53 protein is 393 amino acids, matching the well-characterized cellular tumor antigen p53. A quick length check catches most wrong-assembly and wrong-transcript errors instantly:

```bash
grep -v ">" tp53_peptide.fa | tr -d '\n' | wc -c
```

Expected output:

```
393
```

5. Cross-check against a curated reference. The canonical human p53 sequence corresponds to UniProt entry P04637. If your Ensembl peptide and the curated UniProt sequence differ in length, suspect that you pulled a non-canonical isoform rather than that either database is wrong. Identifier cross-mapping between Ensembl and UniProt accessions is a standard step in protein-centric workflows and is commonly automated, for example when linking gene and transcript IDs to protein records for variant-to-protein mapping [16]. For protein-family work such as GPCR collections, researchers routinely reconcile Ensembl gene records with UniProt protein records for the same reason [5].

6. Record provenance in a small text file: Ensembl release number, assembly (GRCh38), retrieval date, and the exact unversioned and versioned IDs used. This one habit resolves most reproducibility disputes later.

For an orthology-flavored version of the same exercise, Ensembl's gene trees encode the inferred evolutionary history of each gene family across species, and comparative studies routinely pull one-to-one ortholog pairs from Ensembl for analyses such as dN/dS estimation in pufferfish species [13]. If your downstream goal is aligning one protein per species, retrieve through the orthology interfaces rather than picking canonical transcripts blindly.

## Ensembl Protein Sequence Download Tips

These are the habits that separate clean retrievals from silent disasters.

- **Pin the release.** Note the release number and assembly for every download. Ensembl data are versioned precisely so analyses can be reproduced, and annotation packages in R formalize this binding to a release [2].
- **Prefer versioned IDs in your [lab notebook](/knowledge/molecular-biology/lab-notebook) and scripts.** ENSP00000269305.4 pins the exact model. Unversioned IDs always resolve to the current release, which is convenient for live pipelines and terrible for reproducing a 2024 result.
- **Read the FASTA header before parsing.** Ensembl headers carry `gene:`, `transcript:`, and `gene_biotype:` tags. Parse tags by name, never by field position, because attribute order is not a contract.
- **Match the file to the question.** `pep` for proteins, `cds` for coding nucleotides, `cdna` for full spliced transcripts. Most mistaken downloads are nucleotide files feeding protein tools.
- **For cross-species work, start from Ensembl orthology, not BLAST alone.** Ensembl computes gene trees and homology calls across all its species, and the Ensembl Genomes portals extend this comparative framework across taxa [11].
- **For human clinical-adjacent work, look for MANE Select.** Ensembl highlights the matching Ensembl and RefSeq transcript so both communities reference the same protein product.
- **Use the regional mirrors.** The site is served from several geographic locations. If one is slow, the mirror list on the home page gets you the same data closer to you.
- **Check whether a resource already exists.** Precomputed resources built on Ensembl sequences can save you a pipeline entirely, from protein similarity matrices in SIMAP [13] to orthologous marker sets in OrthoMaM [8] and isoform-focused peptide databases derived from Ensembl genome and transcript data [17].

## Common Mistakes and Limitations

**Confusing ENSG, ENST, and ENSP.** Requesting a protein sequence with a gene ID gets you either an error or one representative peptide, depending on the endpoint and parameters. If a result looks suspiciously short, check which identifier you actually supplied.

**Ignoring release drift.** Gene models change between releases. A protein sequence downloaded last year may not match the current release for the same unversioned ID. This is not corruption, it is versioning. Record the release, and if you need yesterday's data, use the Ensembl archive, which serves every past release.

**Assuming one gene equals one protein.** [Alternative splicing](/blog/guides/alternative-splicing) produces multiple proteins per gene, and isoform diversity has direct consequences in proteomics, where peptide-to-protein matching depends on which isoforms your search database contains [17]. Decide explicitly whether your analysis wants the canonical protein, all coding isoforms, or one protein per one-to-one ortholog group.

**Trusting every model.** Automated annotation is imperfect, and quality-control pipelines such as MisPred exist because public databases, including Ensembl, contain abnormal, incomplete, and mispredicted protein sequences [4]. For critical sequences, especially from poorly annotated genomes or low-confidence gene models, sanity-check the peptide against the transcript and against curated homologs.

**Mixing assemblies.** GRCh37 and GRCh38 coordinates and, occasionally, protein models differ. Ensembl maintains archive sites for past assemblies. If a collaborator's variant coordinates are GRCh37 and your proteome is GRCh38, something will break, and it will break silently.

**Treating UniProt and Ensembl IDs as interchangeable.** They are not. Ensembl IDs are genome-model-based and release-versioned. UniProt accessions are protein-entry-based and curated. Cross-reference tables exist precisely because both systems matter, and mapping between them is a normal, explicit step rather than an afterthought [16].

**Pasting huge lists into interactive tools.** The browser is not a bulk tool. Beyond modest list sizes, move to BioMart or FTP. Interactive sessions time out, partial results get lost, and nobody can reproduce what you clicked.

**Exceeding API courtesy limits.** Serial per-ID requests at high frequency trigger throttling. Batch, or go local.

**Forgetting non-vertebrate species live elsewhere.** If your species is missing from the main portal, check Ensembl Genomes and its five sub-portals before concluding the species is absent [6]. Crop species in particular are served through Ensembl Plants in collaboration with external partner projects [11].

## Checking That Your Sequences Are Correct

![Worked calculation showing that a 393-residue peptide implies a CDS of about 1,182 nucleotides including the stop codon.](/article-images/illustrations/ensembl-protein-sequence-download-length-check.webp)

Verification takes minutes and catches most errors.

1. **Format check.** Every record begins with a `>` header and the sequence follows in single-letter amino acid code. Characters such as `*` (stop), `X` (unknown), `U` (selenocysteine), and `B` or `Z` (ambiguous) are legitimate but should be rare. A peptide full of `X` flags a broken gene model.
2. **Length check.** Compare the peptide length to the CDS length. The CDS should equal roughly three times the peptide length plus three nucleotides for the stop codon. A worked example: a 393-residue protein implies a CDS of about 1,182 nucleotides including the stop.
3. **Sum check.** For FTP downloads, run `md5sum -c` against the shipped `.md5` file before use.
4. **Identity spot check.** BLAST two or three of your peptides against the same species' proteome at Ensembl's web BLAST. Your sequence should return a perfect self-hit. This pattern, using Ensembl peptide sets as BLAST targets to confirm identity and placement, is standard practice in genome-scale screening projects [14].
5. **Annotation spot check.** Run one peptide through InterProScan or check its precomputed matches. Consistent domain hits, for example a recognizable DNA-binding domain on a putative [transcription factor](/knowledge/molecular-biology/transcription-factor), indicate the model is whole. InterProScan itself underpins the functional annotation shipped with Ensembl proteomes [3].
6. **Coordinate sanity.** Confirm the gene's chromosome and band on the gene page match your expectation from any prior knowledge. Databases like Ensembl integrate external annotation sources precisely so this kind of cross-checking is possible [2].

## Frequently Asked Questions

### Is Ensembl protein sequence data free to download?

Yes. All Ensembl protein sequences, annotations, and proteome files are freely available without registration through the browser, BioMart, FTP, and API.

### What is the difference between an ENSG, an ENST, and an ENSP identifier?

ENSG identifies a gene locus, ENST identifies one transcript of that gene, and ENSP identifies the peptide translated from one protein-coding transcript. You download protein sequences using ENSP IDs.

### Should I download the canonical protein or all isoforms for a gene?

It depends on your question. Use the canonical protein for per-gene analyses such as orthology and phylogeny, and use all coding isoforms for proteomics search databases and isoform-level studies, since splice variants generate distinct protein products.

### How do I download protein sequences for a non-vertebrate species like a plant or bacterium?

Use the appropriate Ensembl Genomes portal, which serves bacteria, protists, fungi, plants, and invertebrates with the same browser, BioMart, FTP, and API tools as the main vertebrate site.

### Why is the same protein slightly different between Ensembl, UniProt, and NCBI?

The sources annotate independently. Ensembl peptides come from its own gene models on a stated assembly, while UniProt adds curated and experimental knowledge, and small differences in start position or isoform choice are normal. Record release versions and reconcile deliberately rather than assuming one is wrong.

### How do I convert Ensembl protein IDs to UniProt accessions?

Use the cross-reference links on the Ensembl protein page or the Ensembl REST xref endpoints, which map ENSP IDs to external database accessions including UniProt, and handle the mapping explicitly in your pipeline rather than by name matching.

### How do I record which Ensembl release I used so my analysis is reproducible?

Note the release number, assembly name, retrieval date, and versioned identifiers. If you work in R, the `ensembldb` framework pins annotation data to specific Ensembl releases by design, which documents provenance automatically.

### Can I download protein sequences for thousands of genes at once without writing a script?

Yes. Paste your gene list into BioMart as a filter, select the Peptide attribute with identifier headers, and export the whole set as one FASTA file.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "Is Ensembl protein sequence data free to download?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. All Ensembl protein sequences, annotations, and proteome files are freely available without registration through the browser, BioMart, FTP, and API."
      }
    },
    {
      "@type": "Question",
      "name": "What is the difference between an ENSG, an ENST, and an ENSP identifier?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "ENSG identifies a gene locus, ENST identifies one transcript of that gene, and ENSP identifies the peptide translated from one protein-coding transcript. You download protein sequences using ENSP IDs."
      }
    },
    {
      "@type": "Question",
      "name": "Should I download the canonical protein or all isoforms for a gene?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "It depends on your question. Use the canonical protein for per-gene analyses such as orthology and phylogeny, and use all coding isoforms for proteomics search databases and isoform-level studies, since splice variants generate distinct protein products."
      }
    },
    {
      "@type": "Question",
      "name": "How do I download protein sequences for a non-vertebrate species like a plant or bacterium?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Use the appropriate Ensembl Genomes portal, which serves bacteria, protists, fungi, plants, and invertebrates with the same browser, BioMart, FTP, and API tools as the main vertebrate site."
      }
    },
    {
      "@type": "Question",
      "name": "Why is the same protein slightly different between Ensembl, UniProt, and NCBI?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "The sources annotate independently. Ensembl peptides come from its own gene models on a stated assembly, while UniProt adds curated and experimental knowledge, and small differences in start position or isoform choice are normal. Record release versions and reconcile deliberately rather than assuming one is wrong."
      }
    },
    {
      "@type": "Question",
      "name": "How do I convert Ensembl protein IDs to UniProt accessions?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Use the cross-reference links on the Ensembl protein page or the Ensembl REST xref endpoints, which map ENSP IDs to external database accessions including UniProt, and handle the mapping explicitly in your pipeline rather than by name matching."
      }
    },
    {
      "@type": "Question",
      "name": "How do I record which Ensembl release I used so my analysis is reproducible?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Note the release number, assembly name, retrieval date, and versioned identifiers. If you work in R, the ensembldb framework pins annotation data to specific Ensembl releases by design, which documents provenance automatically."
      }
    },
    {
      "@type": "Question",
      "name": "Can I download protein sequences for thousands of genes at once without writing a script?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes. Paste your gene list into BioMart as a filter, select the Peptide attribute with identifier headers, and export the whole set as one FASTA file."
      }
    }
  ]
}
</script>

## Sources

1. [Ensembl's 10th year.](https://pubmed.ncbi.nlm.nih.gov/19906699/)
2. [ensembldb: an R package to create and use Ensembl-based annotation resources.](https://pubmed.ncbi.nlm.nih.gov/30689724/)
3. [InterProScan 6: a modern large-scale protein function annotation pipeline.](https://pubmed.ncbi.nlm.nih.gov/42222668/)
4. [MisPred: a resource for identification of erroneous protein sequences in public databases.](https://pubmed.ncbi.nlm.nih.gov/23864220/)
5. [Retrieving GPCR data from public databases.](https://pubmed.ncbi.nlm.nih.gov/27472010/)
6. [Ensembl Genomes: extending Ensembl across the taxonomic space.](https://pubmed.ncbi.nlm.nih.gov/19884133/)
7. [Using the Ensembl genome server to browse genomic sequence data.](https://pubmed.ncbi.nlm.nih.gov/18428779/)
8. [OrthoMaM v8: a database of orthologous exons and coding sequences for comparative genomics in mammals.](https://pubmed.ncbi.nlm.nih.gov/24723423/)
9. [Disease and phenotype data at Ensembl.](https://pubmed.ncbi.nlm.nih.gov/21400687/)
10. [SPD--a web-based secreted protein database.](https://pubmed.ncbi.nlm.nih.gov/15608170/)
11. [Ensembl Plants: Integrating Tools for Visualizing, Mining, and Analyzing Plant Genomic Data.](https://pubmed.ncbi.nlm.nih.gov/27987162/)
12. [Triticeae resources in Ensembl Plants.](https://pubmed.ncbi.nlm.nih.gov/25432969/)
13. [SIMAP--a comprehensive database of pre-calculated protein sequence similarities, domains, annotations and clusters.](https://pubmed.ncbi.nlm.nih.gov/19906725/)
14. [Simple sequence repeats in zebra finch (Taeniopygia guttata) expressed sequence tags: a new resource for evolutionary genetic studies of passerines.](https://pubmed.ncbi.nlm.nih.gov/17300727/)
15. [AlphaFold Protein Structure Database in 2024: providing structure coverage for over 214 million protein sequences.](https://pubmed.ncbi.nlm.nih.gov/37933859/)
16. [Systems biology-driven analysis of obesity-associated genes with transcript mapping and post-translational modification annotations.](https://pubmed.ncbi.nlm.nih.gov/42172902/)
17. [PEPPI: a peptidomic database of human protein isoforms for proteomics experiments.](https://pubmed.ncbi.nlm.nih.gov/20946618/)