The goal is to map Ensembl identifiers (ENSG, ENST, ENSP) between each other in a programmatic way.
I've searched in the Ensembl website but I couldn't find straightforward instructions to achieve this.
I've also tried to use the public MySQL server, but I couldn't make sense of the schema and the API documentation is overwhelming and quite Perl centered.
Edit: If possible using the Ensembl.org website only as I would like to avoid having to worry about if I'm using the latest version or not.
Just to point out that the Ensembl site has a BioMart interface - http://www.ensembl.org/biomart/martview - and recommends it for data mining. You don't need to worry about versions; BioMart accesses the latest.
This question exposes the downsides of the complexity of the Ensembl schema. Ironically, it is easier to achieve this result via SQL from UCSC (see Pierre's solution) than from Ensembl (see Fred's solution) and justifies the existence of BioMart
On their FTP site, Ensembl.org provides tables (make sure to select TSV format in the "Other annotations" column for easily-parseable text flatfiles) that already have programmatically-mapped ENSG, ENST, and ENSP columns for all species: https://www.ensembl.org/info/data/ftp
This should do what you're looking for.
Ah that's great