Bem-vindo à documentação completa da API DFTrans! Este projeto contém todos os recursos necessários para integrar e utilizar a API do sistema de transporte público do Distrito Federal.
A API DFTrans fornece acesso a informações sobre o sistema de transporte público do Distrito Federal, incluindo linhas de ônibus, paradas, horários, itinerários, estações e muito mais.
https://www.sistemas.dftrans.df.gov.br
Protocolo: HTTPS
Formato de Resposta: JSON / GeoJSON
Retorna informações detalhadas de uma linha específica pelo seu número.
Endpoint:
GET /linha/numero/{numeroLinha}
Parâmetros:
numeroLinha(string): Número da linha (ex: "099.1", "100.1")
Exemplo de Requisição:
fetch('https://www.sistemas.dftrans.df.gov.br/linha/numero/099.1')
.then(response => response.json())
.then(data => console.log(data));Exemplo de Resposta:
{
"sequencial": 123,
"numero": "099.1",
"descricao": "RODOVIÁRIA DO PLANO PILOTO / CEILÂNDIA (P SUL)",
"sentido": "IDA",
"faixaTarifaria": {
"tarifa": 5.50
},
"operadoras": ["URBI", "PIONEIRA"]
}Retorna linhas que passam entre duas referências (origem e destino).
Endpoint:
GET /linha/{tipoOrigem}/{seqOrigem}/{tipoDestino}/{seqDestino}
Parâmetros:
tipoOrigem(string): Tipo da origem ("R" para referência, "E" para estação, "P" para parada)seqOrigem(integer): Sequencial da origemtipoDestino(string): Tipo do destinoseqDestino(integer): Sequencial do destino
Exemplo de Requisição:
fetch('https://www.sistemas.dftrans.df.gov.br/linha/R/1234/R/5678')
.then(response => response.json())
.then(data => console.log(data));Busca linhas por termo de pesquisa com limite de resultados.
Endpoint:
GET /linha/find/{termo}/{limite}
Parâmetros:
termo(string): Termo de busca (número ou descrição da linha)limite(integer): Número máximo de resultados
Exemplo de Requisição:
fetch('https://www.sistemas.dftrans.df.gov.br/linha/find/099/10')
.then(response => response.json())
.then(data => console.log(data));Retorna todas as linhas que passam por uma parada específica.
Endpoint:
GET /linha/parada/codigo/{codParada}
Parâmetros:
codParada(string): Código da parada (ex: "3458")
Exemplo de Requisição:
fetch('https://www.sistemas.dftrans.df.gov.br/linha/parada/codigo/3458')
.then(response => response.json())
.then(data => console.log(data));Retorna todas as linhas que passam por uma estação específica.
Endpoint:
GET /linha/estacao/{seqEstacao}
Parâmetros:
seqEstacao(integer): Sequencial da estação
Retorna informações detalhadas de uma parada específica.
Endpoint:
GET /parada/cod/{codParada}
Parâmetros:
codParada(string): Código da parada
Exemplo de Requisição:
fetch('https://www.sistemas.dftrans.df.gov.br/parada/cod/3458')
.then(response => response.json())
.then(data => console.log(data));Retorna todas as paradas do sistema em formato GeoJSON.
Endpoint:
GET /parada/geo/paradas
Retorna todas as paradas de uma linha específica em formato GeoJSON.
Endpoint:
GET /parada/geo/paradas/linha/{seqLinha}
Parâmetros:
seqLinha(integer): Sequencial da linha
Retorna os horários de uma linha específica.
Endpoint:
GET /horario/linha/numero/{numeroLinha}
Parâmetros:
numeroLinha(string): Número da linha
Exemplo de Requisição:
fetch('https://www.sistemas.dftrans.df.gov.br/horario/linha/numero/099.1')
.then(response => response.json())
.then(data => console.log(data));Retorna os horários de uma linha pelo seu sequencial.
Endpoint:
GET /horario/linha/{seqLinha}
Parâmetros:
seqLinha(integer): Sequencial da linha
Retorna o itinerário detalhado de uma linha.
Endpoint:
GET /itinerario/linha/numero/{numeroLinha}
Parâmetros:
numeroLinha(string): Número da linha
Busca referências (pontos de interesse) por termo de pesquisa.
Endpoint:
GET /referencia/find/{termo}/{limite}
Parâmetros:
termo(string): Termo de buscalimite(integer): Número máximo de resultados (opcional, padrão: 30)
Exemplo de Requisição:
fetch('https://www.sistemas.dftrans.df.gov.br/referencia/find/Brasília/30')
.then(response => response.json())
.then(data => console.log(data));Nota: O caractere / deve ser codificado como %26%2347%3B (HTML entity).
Retorna informações de uma estação específica.
Endpoint:
GET /estacao/{seqEstacao}
Parâmetros:
seqEstacao(integer): Sequencial da estação
Retorna todas as estações em formato GeoJSON.
Endpoint:
GET /estacao/geo/estacoes
Retorna áreas de integração possíveis entre origem e destino.
Endpoint:
GET /areaintegracao/{tipoOrigem}/{seqOrigem}/{tipoDestino}/{seqDestino}
Endpoint:
GET /areaintegracao/geo/areas
Endpoint:
GET /areaintegracao/geo/{seqAreaIntegracao}
Parâmetros:
seqAreaIntegracao(integer): Sequencial da área de integração
Retorna todos os bicicletários em formato GeoJSON.
Endpoint:
GET /bicicletario/geo/bicicletarios
Retorna todos os postos de atendimento SBA em formato GeoJSON.
Endpoint:
GET /postosba/geo/postos
Retorna a posição GPS recente dos veículos de uma linha específica.
Endpoint:
GET /gps/linha/{numeroLinha}/geo/recent
Parâmetros:
numeroLinha(string): Número da linha
Retorna o traçado geográfico do percurso de uma linha.
Endpoint:
GET /percurso/linha/{seqLinha}
Parâmetros:
seqLinha(integer): Sequencial da linha
async function buscarLinhasPorParada(codParada) {
try {
const response = await fetch(
`https://www.sistemas.dftrans.df.gov.br/linha/parada/codigo/${codParada}`
);
if (!response.ok) {
throw new Error('Erro ao buscar linhas');
}
const linhas = await response.json();
console.log(`Linhas que passam pela parada ${codParada}:`);
linhas.forEach(linha => {
console.log(`- ${linha.numero}: ${linha.descricao}`);
});
return linhas;
} catch (error) {
console.error('Erro:', error);
}
}
// Uso
buscarLinhasPorParada('3458');async function buscarHorariosLinha(numeroLinha) {
try {
const response = await fetch(
`https://www.sistemas.dftrans.df.gov.br/horario/linha/numero/${numeroLinha}`
);
if (!response.ok) {
throw new Error('Erro ao buscar horários');
}
const horarios = await response.json();
console.log(`Horários da linha ${numeroLinha}:`);
horarios.horarios.forEach(h => {
console.log(`${h.diaSemana} - ${h.turno}:`);
console.log(h.horarios.join(', '));
});
return horarios;
} catch (error) {
console.error('Erro:', error);
}
}
// Uso
buscarHorariosLinha('099.1');async function buscarReferencias(termo) {
try {
// Codificar caractere '/' como HTML entity
const termoEncoded = termo.replace('/', '%26%2347%3B');
const response = await fetch(
`https://www.sistemas.dftrans.df.gov.br/referencia/find/${termoEncoded}/10`
);
if (!response.ok) {
throw new Error('Erro ao buscar referências');
}
const referencias = await response.json();
console.log(`Referências encontradas para "${termo}":`);
referencias.forEach(ref => {
console.log(`- ${ref.descricao} (ID: ${ref.sequencialRef})`);
});
return referencias;
} catch (error) {
console.error('Erro:', error);
}
}
// Uso
buscarReferencias('Brasília');// Buscar linha por número usando jQuery
function pesquisarLinhaPorNumero(numeroLinha) {
$.get(
'https://www.sistemas.dftrans.df.gov.br/linha/numero/' + numeroLinha,
function(data, status) {
if (status == 'success') {
console.log('Linha encontrada:', data);
console.log('Número:', data.numero);
console.log('Descrição:', data.descricao);
console.log('Tarifa: R$', data.faixaTarifaria.tarifa);
}
}
).fail(function() {
console.error('Falha na requisição');
});
}
// Uso
pesquisarLinhaPorNumero('099.1');O caractere / (barra) em termos de busca deve ser codificado como %26%2347%3B (HTML entity /).
Exemplo:
const termo = "Brasília/Taguatinga";
const termoEncoded = termo.replace('/', '%26%2347%3B');Endpoints que retornam dados geográficos usam o formato GeoJSON. As coordenadas são sempre [longitude, latitude].
| Tipo | Descrição |
|---|---|
R |
Referência (ponto de interesse) |
E |
Estação (terminal/metrô) |
P |
Parada de ônibus |
| Tipo | Descrição |
|---|---|
B |
Terminal BRT |
M |
Estação de Metrô |
R |
Terminal Rodoviário |
A API permite requisições de origens diferentes (CORS habilitado).
- OpenLayers: Biblioteca de mapas para visualização geográfica
- GeoJSON: Formato padrão para dados geográficos
API DFTrans - Distrito Federal