Production Ready API

India's Education Data API

Access India-focused education data for exams, colleges, universities, scholarships, and coaching centres. Built for developers creating the next generation of education apps.

500+ Exams
100+ Scholarships
200+ Colleges
50+ Universities
example.js
const response = await fetch(
  'https://bodhdisha.com/api/v1/colleges',
  {
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY'
    }
  }
);

const data = await response.json();
console.log(data);
Features

Why Choose BodhDisha API?

Everything you need to build amazing education applications

India-Focused Data

Access structured data for Indian exams, colleges, universities, scholarships, courses, and coaching centres.

Fast & Reliable

Built for speed with caching and optimized queries. Average response time under 200ms.

Secure Access

OAuth 2.0 authentication with Google and GitHub. API keys for secure access.

Scalable

From startups to enterprises, choose a plan that fits your needs with flexible rate limits.

Developer Friendly

Clean REST API with JSON responses, search, pagination, and comprehensive documentation.

Dedicated Support

Get help when you need it. Priority support for paid plans.

Integrate

Works with Your Stack

Clean REST API with JSON responses works with any programming language or framework.

example.js
const response = await fetch(
  'https://bodhdisha.com/api/v1/colleges?search=delhi',
  {
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Accept': 'application/json'
    }
  }
);

if (!response.ok) {
  throw new Error(`HTTP ${response.status}`);
}

const data = await response.json();
console.log(data);
example.py
import requests

response = requests.get(
    'https://bodhdisha.com/api/v1/colleges',
    params={'search': 'delhi'},
    headers={'Authorization': 'Bearer YOUR_API_KEY'}
)

response.raise_for_status()
data = response.json()

for college in data['data']:
    print(college['name'])
example.php
<?php

$ch = curl_init();
curl_setopt_array($ch, [
    CURLOPT_URL => 'https://bodhdisha.com/api/v1/colleges?search=delhi',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer YOUR_API_KEY',
        'Accept: application/json'
    ]
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($httpCode === 200) {
    $data = json_decode($response, true);
    print_r($data['data']);
} else {
    echo "Error: HTTP $httpCode\n";
}
example.rb
require 'net/http'
require 'uri'
require 'json'

uri = URI('https://bodhdisha.com/api/v1/colleges')
params = { search: 'delhi' }
uri.query = URI.encode_www_form(params)

req = Net::HTTP::Get.new(uri)
req['Authorization'] = 'Bearer YOUR_API_KEY'
req['Accept'] = 'application/json'

res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
  http.request(req)
end

if res.is_a?(Net::HTTPSuccess)
  data = JSON.parse(res.body)
  puts data['data']
else
  puts "Error: #{res.code} - #{res.message}"
end
example.go
package main

import (
    "encoding/json"
    "fmt"
    "io"
    "net/http"
    "net/url"
)

func main() {
    baseURL, _ := url.Parse("https://bodhdisha.com/api/v1/colleges")
    params := url.Values{}
    params.Add("search", "delhi")
    baseURL.RawQuery = params.Encode()

    req, _ := http.NewRequest("GET", baseURL.String(), nil)
    req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
    req.Header.Set("Accept", "application/json")

    client := &http.Client{}
    resp, _ := client.Do(req)
    defer resp.Body.Close()

    body, _ := io.ReadAll(resp.Body)
    
    if resp.StatusCode == 200 {
        var result map[string]interface{}
        json.Unmarshal(body, &result)
        fmt.Printf("%v\n", result["data"])
    }
}
Example.java
import java.net.http.*;
import java.net.URI;

HttpClient client = HttpClient.newHttpClient();

HttpRequest request = HttpRequest.newBuilder()
    .uri(URI.create("https://bodhdisha.com/api/v1/colleges?search=delhi"))
    .header("Authorization", "Bearer YOUR_API_KEY")
    .header("Accept", "application/json")
    .build();

HttpResponse response = client.send(
    request,
    HttpResponse.BodyHandlers.ofString()
);

if (response.statusCode() == 200) {
    System.out.println(response.body());
} else {
    System.out.println("Error: " + response.statusCode());
}
Program.cs
using System;
using System.Net.Http;
using System.Threading.Tasks;

class Program {
    static async Task Main() {
        using var client = new HttpClient();
        
        client.DefaultRequestHeaders.Add(
            "Authorization", 
            "Bearer YOUR_API_KEY"
        );
        
        var response = await client.GetAsync(
            "https://bodhdisha.com/api/v1/colleges?search=delhi"
        );
        
        if (response.IsSuccessStatusCode) {
            var content = await response.Content.ReadAsStringAsync();
            Console.WriteLine(content);
        } else {
            Console.WriteLine($"Error: {response.StatusCode}");
        }
    }
}
example.js
const axios = require('axios');

try {
    const response = await axios.get(
        'https://bodhdisha.com/api/v1/colleges',
        {
            params: { search: 'delhi' },
            headers: {
                'Authorization': 'Bearer YOUR_API_KEY'
            }
        }
    );
    
    console.log(response.data);
} catch (error) {
    console.error('Error:', error.response?.status);
}
App.jsx
import { useState, useEffect } from 'react';

function Colleges() {
    const [colleges, setColleges] = useState([]);
    
    useEffect(() => {
        const fetchColleges = async () => {
            const response = await fetch(
                'https://bodhdisha.com/api/v1/colleges?search=delhi',
                {
                    headers: {
                        'Authorization': 'Bearer YOUR_API_KEY'
                    }
                }
            );
            
            const data = await response.json();
            setColleges(data.data);
        };
        
        fetchColleges();
    }, []);
    
    return (
        <ul>
            {colleges.map(c => (
                <li key={c.id}>{c.name}</li>
            ))}
        </ul>
    );
}
App.vue
<template>
  <ul>
    <li v-for="college in colleges" :key="college.id">
      {{ college.name }}
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      colleges: []
    };
  },
  async mounted() {
    const response = await fetch(
      'https://bodhdisha.com/api/v1/colleges?search=delhi',
      {
        headers: {
          'Authorization': 'Bearer YOUR_API_KEY'
        }
      }
    );
    
    const data = await response.json();
    this.colleges = data.data;
  }
};
</script>
colleges.service.ts
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';

@Injectable({
  providedIn: 'root'
})
export class CollegesService {
  private apiUrl = 'https://bodhdisha.com/api/v1/colleges';
  
  constructor(private http: HttpClient) {}
  
  getColleges() {
    const headers = new HttpHeaders({
      'Authorization': 'Bearer YOUR_API_KEY'
    });
    
    return this.http.get(this.apiUrl, {
      params: { search: 'delhi' },
      headers
    });
  }
}
colleges_api.dart
import 'package:http/http.dart' as http;
import 'dart:convert';

class CollegesApi {
  static const String baseUrl = 
    'https://bodhdisha.com/api/v1/colleges';
  
  static Future<List> getColleges() async {
    final response = await http.get(
      Uri.parse('$baseUrl?search=delhi'),
      headers: {
        'Authorization': 'Bearer YOUR_API_KEY',
        'Accept': 'application/json',
      },
    );
    
    if (response.statusCode == 200) {
      final data = json.decode(response.body);
      return data['data'];
    } else {
      throw Exception('Failed to load colleges');
    }
  }
}

Ready to build something amazing?

Get started with the BodhDisha API today. Free trial included.