diff --git a/src/libs/routes/class.js b/src/libs/routes/class.js
index 382121b5f5f3de1cb47c80b6abc75297846beebc..a325e4ee2feabf06471be82c41ecf0331c83b63f 100644
--- a/src/libs/routes/class.js
+++ b/src/libs/routes/class.js
@@ -26,6 +26,12 @@ classApp.get('/year_range', (req, res, next) => {
     next();
 }, query, response('range'));
 
+classApp.get('/years', (req, res, next) => {
+    req.sql.from('turma')
+    .field('DISTINCT turma.ano_censo', 'year');
+    next();
+}, query, response('years'));
+
 classApp.get('/location', (req, res, next) => {
     req.sql = squel.select()
     .field('id')
diff --git a/src/libs/routes/classroom.js b/src/libs/routes/classroom.js
index 7a4f3ce278d1136a47dc08d642a47f56ba399880..3658a587167c24cc3a3afcc37e0dde4b4808a2ba 100644
--- a/src/libs/routes/classroom.js
+++ b/src/libs/routes/classroom.js
@@ -27,6 +27,12 @@ classroomApp.get('/year_range', (req, res, next) => {
     next();
 }, query, response('range'));
 
+classroomApp.get('/years', (req, res, next) => {
+    req.sql.from('escola')
+    .field('DISTINCT escola.ano_censo', 'year');
+    next();
+}, query, response('years'));
+
 classroomApp.get('/adm_dependency', (req, res, next) => {
     req.sql.from('dependencia_adm')
     .field('id')
diff --git a/src/libs/routes/enrollment.js b/src/libs/routes/enrollment.js
index b7dc9b170db18b294fcdb222d4f9f24a88980e25..274e96ad2c2a1cff9335eb91ab14d13521b6a107 100644
--- a/src/libs/routes/enrollment.js
+++ b/src/libs/routes/enrollment.js
@@ -27,6 +27,12 @@ enrollmentApp.get('/year_range', (req, res, next) => {
     next();
 }, query, response('range'));
 
+enrollmentApp.get('/years', (req, res, next) => {
+    req.sql.from('matricula')
+    .field('DISTINCT matricula.ano_censo', 'year');
+    next();
+}, query, response('years'));
+
 enrollmentApp.get('/location', (req, res, next) => {
     req.sql = squel.select()
     .field('id')
diff --git a/src/libs/routes/idhm.js b/src/libs/routes/idhm.js
index 3fbd02dfcb674450d769309d225ac26f7ea3e820..094434616187ea7619f895e8ba1d40135d62aeea 100644
--- a/src/libs/routes/idhm.js
+++ b/src/libs/routes/idhm.js
@@ -41,6 +41,24 @@ idhmApp.get('/year_range', (req, res, next) => {
     next();
 }, query, response('range'));
 
+idhmApp.get('/years', (req, res, next) => {
+    req.sql.from('adh_idh')
+    .field('DISTINCT adh_idh.ano_censo', 'year');
+    next();
+}, query, (req, res, next) => {
+    req.oldResult = req.result;
+
+    req.sql = squel.select();
+
+    req.sql.from('adh_idh_uf')
+    .field('DISTINCT adh_idh_uf.ano_censo', 'year');
+    next();
+}, query, (req, res, next) => {
+    let result = Object.assign(req.oldResult, req.result);
+    req.result = result;
+    next();
+}, response('years'));
+
 idhmApp.get('/IDHM_level', (req, res, next) => {
     req.result = [
         {id: null, name: 'Não Classificado'},
diff --git a/src/libs/routes/idhme.js b/src/libs/routes/idhme.js
index d762c95d7b2c6eb59478b2c49af54d4b712957c0..2a68bc9aedf20edaa01f7974dc6c8fd57e1517d7 100644
--- a/src/libs/routes/idhme.js
+++ b/src/libs/routes/idhme.js
@@ -39,6 +39,24 @@ idhmeApp.get('/year_range', (req, res, next) => {
     next();
 }, query, response('range'));
 
+idhmeApp.get('/years', (req, res, next) => {
+    req.sql.from('adh_idh')
+    .field('DISTINCT adh_idh.ano_censo', 'year');
+    next();
+}, query, (req, res, next) => {
+    req.oldResult = req.result;
+
+    req.sql = squel.select();
+
+    req.sql.from('adh_idh_uf')
+    .field('DISTINCT adh_idh_uf.ano_censo', 'year');
+    next();
+}, query, (req, res, next) => {
+    let result = Object.assign(req.oldResult, req.result);
+    req.result = result;
+    next();
+}, response('years'));
+
 rqf.addField({
     name: 'filter',
     field: false,
diff --git a/src/libs/routes/idhml.js b/src/libs/routes/idhml.js
index 81b920cdaefd83a7ab0a72f438c7d022f311c2e1..5ba3e12b704a0eb3ac3ae7c5119dcdf0093db21d 100644
--- a/src/libs/routes/idhml.js
+++ b/src/libs/routes/idhml.js
@@ -39,6 +39,24 @@ idhmlApp.get('/year_range', (req, res, next) => {
     next();
 }, query, response('range'));
 
+idhmlApp.get('/years', (req, res, next) => {
+    req.sql.from('adh_idh')
+    .field('DISTINCT adh_idh.ano_censo', 'year');
+    next();
+}, query, (req, res, next) => {
+    req.oldResult = req.result;
+
+    req.sql = squel.select();
+
+    req.sql.from('adh_idh_uf')
+    .field('DISTINCT adh_idh_uf.ano_censo', 'year');
+    next();
+}, query, (req, res, next) => {
+    let result = Object.assign(req.oldResult, req.result);
+    req.result = result;
+    next();
+}, response('years'));
+
 rqf.addField({
     name: 'filter',
     field: false,
diff --git a/src/libs/routes/idhmr.js b/src/libs/routes/idhmr.js
index 42b31c3c2541dfa7582fa8ee037289158ea90250..c8a0cba078bfc420973438f230209534d495f715 100644
--- a/src/libs/routes/idhmr.js
+++ b/src/libs/routes/idhmr.js
@@ -41,6 +41,24 @@ idhmrApp.get('/year_range', (req, res, next) => {
     next();
 }, query, response('range'));
 
+idhmrApp.get('/years', (req, res, next) => {
+    req.sql.from('adh_idh')
+    .field('DISTINCT adh_idh.ano_censo', 'year');
+    next();
+}, query, (req, res, next) => {
+    req.oldResult = req.result;
+
+    req.sql = squel.select();
+
+    req.sql.from('adh_idh_uf')
+    .field('DISTINCT adh_idh_uf.ano_censo', 'year');
+    next();
+}, query, (req, res, next) => {
+    let result = Object.assign(req.oldResult, req.result);
+    req.result = result;
+    next();
+}, response('years'));
+
 rqf.addField({
     name: 'filter',
     field: false,
diff --git a/src/libs/routes/pibpercapita.js b/src/libs/routes/pibpercapita.js
index 9195806ca1f26ac696162d48d78053d5c66fb326..6009db57fc3f5413ece1cb2aca27347ed5e8ce44 100644
--- a/src/libs/routes/pibpercapita.js
+++ b/src/libs/routes/pibpercapita.js
@@ -25,6 +25,12 @@ pibpercapitaApp.get('/year_range', (req, res, next) => {
     next();
 }, query, response('range'));
 
+pibpercapitaApp.get('/years', (req, res, next) => {
+    req.sql.from('ibge_pib').
+    field('DISTINCT ibge_pib.ano_censo', 'years');
+    next();
+}, query, response('years'));
+
 pibpercapitaApp.get('/income_level', (req, res, next) => {
     req.result = [
         {id: 1, name: "1º quintil – 20% menores"},
diff --git a/src/libs/routes/population.js b/src/libs/routes/population.js
index f7777c173d7e668f55eb79c3ec9b1a6b7055643f..64bb837999b68cedcd54a9aea2568ad325a13410 100644
--- a/src/libs/routes/population.js
+++ b/src/libs/routes/population.js
@@ -25,6 +25,12 @@ populationApp.get('/year_range', (req, res, next) => {
     next();
 }, query, response('range'));
 
+populationApp.get('/years', (req, res, next) => {
+    req.sql.from('ibge_populacao').
+    field('DISTINCT ibge_populacao.ano_censo', 'years');
+    next();
+}, query, response('years'));
+
 populationApp.get('/city_size', (req, res, next) => {
     req.result = [
         {id: 1, name: "até 5000"},
diff --git a/src/libs/routes/school.js b/src/libs/routes/school.js
index f963e23d2e60977209b46b507e980e0febf93e38..9c16f230dd7943dc5cd9210e0510576734eee9c4 100644
--- a/src/libs/routes/school.js
+++ b/src/libs/routes/school.js
@@ -25,6 +25,12 @@ schoolApp.get('/year_range', (req, res, next) => {
     next();
 }, query, response('range'));
 
+schoolApp.get('/years', (req, res, next) => {
+    req.sql.from('escola').
+    field('DISTINCT escola.ano_censo', 'years');
+    next();
+}, query, response('years'));
+
 schoolApp.get('/location', (req, res, next) => {
     req.result = [
         {id: 1, name: 'Urbana'},
diff --git a/src/libs/routes/teacher.js b/src/libs/routes/teacher.js
index 29fdb4db8b171894cf15b6049afa34a0913eb5d0..fd7e5c99f4bb558329f64a28dcb489b556da5a07 100644
--- a/src/libs/routes/teacher.js
+++ b/src/libs/routes/teacher.js
@@ -26,6 +26,12 @@ teacherApp.get('/year_range', (req, res, next) => {
     next();
 }, query, response('range'));
 
+teacherApp.get('/years', (req, res, next) => {
+    req.sql.from('docente').
+    field('DISTINCT docente.ano_censo', 'years');
+    next();
+}, query, response('years'));
+
 teacherApp.get('/adm_dependency_detailed', (req, res, next) => {
     req.sql.from('dependencia_adm')
     .field('id', 'id')