How to migrate from EPSG.io to MapTiler Coordinates API

After ten years, the EPSG.io coordinates search and transformation service API is being transitioned to the MapTiler Coordinates API for improved security, scalability, and sustainability. If you would like to read more about EPSG.io, visit the About page, maptiler.com/docs/epsgio, or the GitHub page. This new API requires registration but remains free for non-commercial use. If you want to utilize it for your commercial projects, please subscribe to one of MapTiler Cloud paid plans.

Old endpoints (EPSG.io)

  • Search: https://epsg.io/?q=swiss&format=json
  • Transform: https://epsg.io/trans?data=7.457914,46.948563&s\_srs=4326&t\_srs=2056

New endpoints (MapTiler Coordinates API)

  • Search: https://api.maptiler.com/coordinates/search/swiss.json
  • Transform: https://api.maptiler.com/coordinates/transform/7.457914,46.948563.json?s\_srs=4326&t\_srs=2056

How to migrate to Coordinates API

  1. Change the URL from https://epsg.io to https://api.maptiler.com/coordinates

  2. Search: After search/, insert your phrase (including spaces and parameters) and add .json at the end.

    Examples:

    • https://api.maptiler.com/coordinates/search/swiss lv95.json
    • https://api.maptiler.com/coordinates/search/swiss deprecated:* kind:*.json

    For more info about search/ and its parameters, go to the Coordinates API documentation.

  3. Transform: Give coordinates after transform/ with coordinate system and transformation parameters after?. For multiple points, separate the coordinates with;.

    Example: https://api.maptiler.com/coordinates/transform/7.457914,46.948563;7.467914,46.958563.json?s\_srs=4326&t\_srs=2056

    For more info about transform/ and its parameters, go to the Coordinates API Transform Documentation.

Get your API key

Every query to the search or transformation endpoints requires the ?key=YOUR_MAPTILER_API_KEY_HERE parameter.

Transformation:

https://api.maptiler.com/coordinates/transform/7,46.json?s_srs=4326&t_srs=2056&key=YOUR_MAPTILER_API_KEY_HERE

Search:

https://api.maptiler.com/coordinates/search/swiss.json?key=YOUR_MAPTILER_API_KEY_HERE

To get a MapTiler key, follow the API key guide. The key provides usage statistics and enhances your app’s security. MapTiler ensures privacy protection as outlined in its privacy policy.

How to migrate search with the optional trans parameter

trans=1 translates into transformations = true

Example:

https://epsg.io/?q=swiss&format=json&trans=1 translates into https://api.maptiler.com/coordinates/search/swiss.json?key=YOUR_MAPTILER_API_KEY_HERE&transformations=true

Changes in search endpoint

Response to the endpoints has changed. The old one looks like this, for the request https://epsg.io/?q=swiss%20lv95&format=json:

{
   "number_result": 1,
   "results": [
     {
       "accuracy": 1,
       "area": "Liechtenstein; Switzerland.",
       "authority": "EPSG",
       "bbox": [
          47.81,
          5.96,
          45.82,
          10.49
       ], 
       "code": "2056",
       "default_trans": 1676,
       "kind": "CRS-PROJCRS",
       "name": "CH1903+ / LV95",
       "proj4": "+proj=somerc +lat_0=46.9524055555556 +lon_0=7.43958333333333 +k_0=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs +type=crs",
       "trans": [
          1509,
          1647,
          1676,
          8457
       ],
       "unit": "metre",
       "wkt": "PROJCS[\"CH1903+ / LV95\",GEOGCS[\"CH1903+\",DATUM[\"CH1903+\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128],TOWGS84[674.374,15.056,405.346,0,0,0,0]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4150\"]],PROJECTION[\"Hotine_Oblique_Mercator_Azimuth_Center\"],PARAMETER[\"latitude_of_center\",46.9524055555556],PARAMETER[\"longitude_of_center\",7.43958333333333],PARAMETER[\"azimuth\",90],PARAMETER[\"rectified_grid_angle\",90],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2600000],PARAMETER[\"false_northing\",1200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2056\"]]"
     }
   ],
   "status": "ok"
}

The new one looks like this, for the request https://api.maptiler.com/coordinates/search/swiss lv95.json?exports=true:

{
   "results": [
     {
       "id": {
          "authority": "EPSG",
          "code": 2056
       },
       "kind": "CRS-PROJCRS",
       "name": "CH1903+ / LV95",
       "exports": {
          "proj4": "+proj=somerc +lat_0=46.9524055555556 +lon_0=7.43958333333333 +k_0=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +towgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs +type=crs",
          "wkt": "PROJCS[\"CH1903+ / LV95\",GEOGCS[\"CH1903+\",DATUM[\"CH1903+\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128],TOWGS84[674.374,15.056,405.346,0,0,0,0]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4150\"]],PROJECTION[\"Hotine_Oblique_Mercator_Azimuth_Center\"],PARAMETER[\"latitude_of_center\",46.9524055555556],PARAMETER[\"longitude_of_center\",7.43958333333333],PARAMETER[\"azimuth\",90],PARAMETER[\"rectified_grid_angle\",90],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2600000],PARAMETER[\"false_northing\",1200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2056\"]]"
       },
       "unit": "metre",
       "accuracy": 1,
       "area": "Liechtenstein; Switzerland.",
       "bbox": [
          5.96,
          45.82,
          10.49,
          47.81
       ],
       "deprecated": false,
       "default_transformation": {
          "authority": "EPSG",
          "code": 1676
       },
       "transformations": [
          1509,
          1647,
          1676,
          8457
       ]
     }
   ],
   "total": 1
}

Key changes

  • Renamed number_result to total
  • Renamed default_trans to default_transformation
  • Renamed trans to transformation
  • Nested code and authority into id:{authority, code}
  • Nested default transformation code into default_transformation:{authority, code}
  • The value of code is not a string but it is a number
  • Bounding box list from [Ymax, Xmin, Ymin, Xmax] to [Xmin, Ymin, Xmax, Ymax]
  • proj4 and wkt are available only if you pass the parameter exports=true
    • Nested in exports: {proj, wkt}
    • Without exports=true will be export:null
  • Added deprecated (boolean) information
  • Dropped status

Changes in transformation endpoint

Selecting particular transformation

Instead of using single “coordinate-system - transformation” value, e.g. 5514 - 15965 value, use the ops parameter for transformation, e.g. https://api.maptiler.com/coordinates/transform/17,50.json?s_srs=4326&t_srs=5514&ops=15965.

More details in the Coordinates API Transform Documentation.

Changes in response

Old response to transform one point for the request https://epsg.io/trans?data=17,50&s_srs=4326&t_srs=5514-15965:

{
    "x": "-560595.6992028592",
    "y": "-1074706.2565340507",
    "z": "0.0"
}

Old response to transform multiple points for the request https://epsg.io/trans?data=17,50;17.1,50.1&s_srs=4326&t_srs=5514-15965:

[  
    {  
      "x": "-560595.6992028592",  
      "y": "-1074706.2565340507",  
      "z": "0.0"  
    },  
    {  
      "x": "-552340.3607729311",  
      "y": "-1064368.376869001",  
      "z": "0.0"  
    }  
]

New response transforming multiple points for the request https://api.maptiler.com/coordinates/transform/17,50;17.1,50.1.json?s_srs=4326&t_srs=5514&ops=15965):

{  
   "transformer_selection_strategy": "listed",  
   "results": [  
     {  
         "x": -560595.6992028592,  
         "y": -1074706.2565340507,  
         "z": 0  
     },  
     {  
         "x": -552340.3607729311,  
         "y": -1064368.376869001,  
         "z": 0  
     }  
   ]  
}

Key changes

All other endpoints remain unchanged. You can still use and download definitions like Proj4, SQL, or WKT2 using the same links, e.g. https://epsg.io/2056.proj4, https://epsg.io/5514-1623.sql, or https://epsg.io/3857.wkt2. A full list of current definitions can be found in epsg.io/docs.

Support

In case you run into any issues, feel free to contact MapTiler Support.