country string Only institutions in this country (ISO 3166-1 alpha-2, case-insensitive — us and US both work). A valid two-letter code with no institutions in the snapshot returns an empty list; anything that isn't two letters is a 400.
Search 10,254 universities and colleges in 199 countries, resolve a domain like mit.edu to its institution, and check if an email is a university address.
Authoritative reference data or standards computation
Returns matching institutions from the pinned snapshot. A page holds at most 100 records; use offset to walk further.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
country | string | example: DK | Only institutions in this country (ISO 3166-1 alpha-2, case-insensitive — us and US both work). A valid two-letter code with no institutions in the snapshot returns an empty list; anything that isn't two letters is a 400. |
search | string | example: institute of technology | Only institutions whose name contains this text — case-, diacritic- and apostrophe-insensitive (universite matches Université, munchen matches München). |
sort | enum | default: country allowed: country | name example: name | country = the stored order, grouped by ISO alpha-2 code and A→Z by name inside each country; name = one global A→Z ordering across every country. |
offset | int | default: 0 allowed: 0 – 20000 example: 100 | Skip this many matches before count is applied, so you can page through large results (offset=100 with count=100 returns the second hundred). |
country string Only institutions in this country (ISO 3166-1 alpha-2, case-insensitive — us and US both work). A valid two-letter code with no institutions in the snapshot returns an empty list; anything that isn't two letters is a 400.
search string Only institutions whose name contains this text — case-, diacritic- and apostrophe-insensitive (universite matches Université, munchen matches München).
sort enum country = the stored order, grouped by ISO alpha-2 code and A→Z by name inside each country; name = one global A→Z ordering across every country.
offset int Skip this many matches before count is applied, so you can page through large results (offset=100 with count=100 returns the second hundred).
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
count | int | default: 25 allowed: 1 – 100 example: 3 | Limit the number of returned records (1–100). Defaults to 25. |
fields | list | example: name,country | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: website | Return all fields except these (comma-separated). |
format | enum | default: json allowed: json | ndjson | csv example: csv | Response format: json envelope, ndjson (one record per line) or csv. |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
count int Limit the number of returned records (1–100). Defaults to 25.
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
format enum Response format: json envelope, ndjson (one record per line) or csv.
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
name | string | Institution name exactly as the upstream community list publishes it. Casing and punctuation are inconsistent upstream and are never rewritten here. | Massachusetts Institute of Technology |
country | string | Canonical ISO 3166-1 English country name, joined from this project's country dataset by the upstream alpha-2 code. The upstream free-text country string is discarded. | United States |
countryCode | string | ISO 3166-1 alpha-2 code as published upstream. | US |
domains | string[] | Every domain the list registers to this institution, lowercased. Never empty; most rows have one, a few have up to five. | ["mit.edu"] |
website | string | The first upstream web page, verbatim. Many are still http:// and some redirect or have moved — this is a copied value, not a checked one. | http://web.mit.edu/ |
name string Institution name exactly as the upstream community list publishes it. Casing and punctuation are inconsistent upstream and are never rewritten here.
example: Massachusetts Institute of Technology
country string Canonical ISO 3166-1 English country name, joined from this project's country dataset by the upstream alpha-2 code. The upstream free-text country string is discarded.
example: United States
countryCode string ISO 3166-1 alpha-2 code as published upstream.
example: US
domains string[] Every domain the list registers to this institution, lowercased. Never empty; most rows have one, a few have up to five.
example: ["mit.edu"]
website string The first upstream web page, verbatim. Many are still http:// and some redirect or have moved — this is a copied value, not a checked one.
example: http://web.mit.edu/
/api/universities?country=dk&count=100 {
"data": [
{
"name": "Aalborg Business College",
"country": "Denmark",
"countryCode": "DK",
"domains": [
"ah.dk"
],
"website": "http://www.ah.dk/"
},
{
"name": "Aalborg University",
"country": "Denmark",
"countryCode": "DK",
"domains": [
"auc.dk",
"aau.dk",
"student.aau.dk"
],
"website": "http://www.auc.dk/"
},
{
"name": "Aarhus School of Architecture",
"country": "Denmark",
"countryCode": "DK",
"domains": [
"a-aarhus.dk"
],
"website": "http://www.a-aarhus.dk/"
},
{
"name": "Aarhus School of Business",
"country": "Denmark",
"countryCode": "DK",
"domains": [
"hha.dk"
],
"website": "http://www.hha.dk/"
},
…
"generatedAt": "2026-09-15T19:47:18.000Z"
}
} /api/universities?search=institute+of+technology&count=25 {
"data": [
{
"name": "Eritrea Institute of Technology",
"country": "Eritrea",
"countryCode": "ER",
"domains": [
"eit.edu.er"
],
"website": "http://www.eit.edu.er/"
},
{
"name": "Mekelle Institute of Technology",
"country": "Ethiopia",
"countryCode": "ET",
"domains": [
"mitethiopia.edu.et"
],
"website": "http://www.mitethiopia.edu.et/"
},
{
"name": "Dares Salaam Institute of Technology",
"country": "Tanzania",
"countryCode": "TZ",
"domains": [
"dit.ac.tz"
],
"website": "http://www.dit.ac.tz/"
},
{
"name": "Harare Institute of Technology",
"country": "Zimbabwe",
"countryCode": "ZW",
"domains": [
"hit.ac.zw"
],
"website": "http://www.hit.ac.zw/"
},
{
"name": "Beijing Institute of Technology",
…
"generatedAt": "2026-09-15T19:47:18.000Z"
}
} /api/universities?search=universite+de+montreal {
"data": [
{
"name": "École Polytechnique de Montréal, Université de Montréal",
"country": "Canada",
"countryCode": "CA",
"domains": [
"polymtl.ca"
],
"website": "http://www.polymtl.ca/"
},
{
"name": "Université de Montréal",
"country": "Canada",
"countryCode": "CA",
"domains": [
"umontreal.ca"
],
"website": "http://www.umontreal.ca/"
}
],
"meta": {
"endpoint": "universities",
"count": 2,
"params": {
"search": "universite de montreal",
"sort": "country",
"offset": 0
},
"generatedAt": "2026-09-15T19:47:18.000Z"
}
} /api/universities?country=us&sort=name&count=100&offset=100 {
"data": [
{
"name": "Austin College",
"country": "United States",
"countryCode": "US",
"domains": [
"austincollege.edu"
],
"website": "http://www.austincollege.edu/"
},
{
"name": "Austin Community College",
"country": "United States",
"countryCode": "US",
"domains": [
"austincc.edu"
],
"website": "http://www.austincc.edu/"
},
{
"name": "Austin Peay State University",
"country": "United States",
"countryCode": "US",
"domains": [
"apsu.edu"
],
"website": "http://www.apsu.edu/"
},
{
"name": "Averett College",
"country": "United States",
"countryCode": "US",
"domains": [
"averett.edu"
],
"website": "http://www.averett.edu/"
},
{
"name": "Avila College",
…
"generatedAt": "2026-09-15T19:47:18.000Z"
}
} /api/universities?country=jp&count=100&fields=name,domains&format=csv name,domains
Aichi Bunkyo University,"[""abu.ac.jp""]"
Aichi Gakuin University,"[""aichi-gakuin.ac.jp""]"
Aichi Gakusen University,"[""gakusen.ac.jp""]"
Aichi Institute of Technology,"[""aitech.ac.jp""]"
Aichi Medical University,"[""aichi-med-u.ac.jp""]"
Aichi Prefectural University,"[""aichi-pu.ac.jp""]"
Aichi Prefectural University of Fine Arts & Music,"[""aichi-fam-u.ac.jp""]"
Aichi Sangyo University,"[""asu.ac.jp""]"
Aichi Shukutoku University,"[""aasa.ac.jp""]"
Aichi University,"[""aichi-u.ac.jp""]"
Aichi University of Education,"[""aichi-edu.ac.jp""]"
Aikoku Gakuen University,"[""aikoku-u.ac.jp""]"
Akita University,"[""akita-u.ac.jp""]"
Akita University of Economics and Law,"[""akeihou-u.ac.jp""]"
"American University Extension, Okinawa","[""aue-okinawa.ac.jp""]"
Aomori Chuoh Gakuin University,"[""aomoricgu.ac.jp""]"
Aomori Public College,"[""nebuta.ac.jp""]"
Aomori University,"[""aomori-u.ac.jp""]"
Aomori University of Health and Welfare,"[""auhw.ac.jp""]"
Aoyama Gakuin University,"[""aoyama.ac.jp""]"
Asahi University,"[""asahi-u.ac.jp""]"
Asahikawa Medical College,"[""asahikawa-med.ac.jp""]"
Asahikawa University,"[""asahikawa-u.ac.jp""]"
Ashikaga Institute of Technology,"[""ashitech.ac.jp""]"
Ashiya University,"[""ashiya-u.ac.jp""]"
Asia University,"[""asia-u.ac.jp""]"
Atomi College,"[""atomi.ac.jp""]"
Azabu University,"[""azabu-u.ac.jp""]"
Baika Women's College,"[""baika.ac.jp""]"
Baiko Women's College,"[""baiko.ac.jp""]"
Beppu University,"[""beppu-u.ac.jp""]"
Bukkyo University,"[""bukkyo-u.ac.jp""]"
Bunka Women's University,"[""bunka-wu.ac.jp""]"
Bunkyo Gakuin University,"[""bgu.ac.jp""]"
Bunkyo University,"[""bunkyo.ac.jp""]"
Chiba Institute of Technology,"[""it-chiba.ac.jp""]"
Chiba Keizai University,"[""cku.ac.jp""]"
Chiba University,"[""chiba-u.ac.jp""]"
Chiba University,"[""chiba-u.jp""]"
…
Hanazono University,"[""hanazono.ac.jp""]"
Hannan University,"[""hannan-u.ac.jp""]"
Exact match first; when the host itself is not listed, the lookup walks up to the parent domain and says so. Never falls back to a bare TLD.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
domain
required
| string | example: mit.edu | The domain to resolve, e.g. mit.edu. Case-insensitive; a full URL is accepted and reduced to its host. Must have at least two labels. |
domain string required The domain to resolve, e.g. mit.edu. Case-insensitive; a full URL is accepted and reduced to its host. Must have at least two labels.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
fields | list | example: domain,matchedDomain | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: institutions | Return all fields except these (comma-separated). |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
domain | string | The host that was looked up, lowercased (and extracted from a URL if one was given). | cs.ox.ac.uk |
matchedDomain | string | The listed domain that produced the answer — equal to domain on an exact hit. | ox.ac.uk |
matchType | string | exact = the queried host is itself listed; parent = an ancestor domain of it is listed. | parent |
institutionCount | integer | How many institutions are listed under matchedDomain — 1, except for the four shared domains. | 1 |
institutions | object[] | Every institution registered under matchedDomain, each with name, country, countryCode, domains and website. Normally one entry; upstream registers four domains to two institutions each. | [{"name":"Massachusetts Institute of Technology","country":"United States","countryCode":"US","domains":["mit.edu"],"website":"http://web.mit.edu/"}] |
domain string The host that was looked up, lowercased (and extracted from a URL if one was given).
example: cs.ox.ac.uk
matchedDomain string The listed domain that produced the answer — equal to domain on an exact hit.
example: ox.ac.uk
matchType string exact = the queried host is itself listed; parent = an ancestor domain of it is listed.
example: parent
institutionCount integer How many institutions are listed under matchedDomain — 1, except for the four shared domains.
example: 1
institutions object[] Every institution registered under matchedDomain, each with name, country, countryCode, domains and website. Normally one entry; upstream registers four domains to two institutions each.
example: [{"name":"Massachusetts Institute of Technology","country":"United States","countryCode":"US","domains":["mit.edu"],"website":"http://web.mit.edu/"}]
/api/universities/by-domain?domain=mit.edu {
"data": {
"domain": "mit.edu",
"matchedDomain": "mit.edu",
"matchType": "exact",
"institutionCount": 1,
"institutions": [
{
"name": "Massachusetts Institute of Technology",
"country": "United States",
"countryCode": "US",
"domains": [
"mit.edu"
],
"website": "http://web.mit.edu/"
}
]
},
"meta": {
"endpoint": "universities",
"route": "/by-domain",
"params": {
"domain": "mit.edu"
},
"generatedAt": "2026-09-15T19:47:18.000Z"
}
} /api/universities/by-domain?domain=cs.ox.ac.uk {
"data": {
"domain": "cs.ox.ac.uk",
"matchedDomain": "ox.ac.uk",
"matchType": "parent",
"institutionCount": 1,
"institutions": [
{
"name": "University of Oxford",
"country": "United Kingdom",
"countryCode": "GB",
"domains": [
"oxford.ac.uk",
"ox.ac.uk"
],
"website": "http://www.ox.ac.uk/"
}
]
},
"meta": {
"endpoint": "universities",
"route": "/by-domain",
"params": {
"domain": "cs.ox.ac.uk"
},
"generatedAt": "2026-09-15T19:47:18.000Z"
}
} /api/universities/by-domain?domain=qu.edu.az {
"data": {
"domain": "qu.edu.az",
"matchedDomain": "qu.edu.az",
"matchType": "exact",
"institutionCount": 2,
"institutions": [
{
"name": "Karabakh University",
"country": "Azerbaijan",
"countryCode": "AZ",
"domains": [
"qu.edu.az"
],
"website": "https://qu.edu.az/"
},
{
"name": "Qafqaz University",
"country": "Azerbaijan",
"countryCode": "AZ",
"domains": [
"qu.edu.az"
],
"website": "http://www.qu.edu.az/"
}
]
},
"meta": {
"endpoint": "universities",
"route": "/by-domain",
"params": {
"domain": "qu.edu.az"
},
"generatedAt": "2026-09-15T19:47:18.000Z"
}
} /api/universities/by-domain?domain=https://www.u-tokyo.ac.jp/en/ {
"data": {
"domain": "www.u-tokyo.ac.jp",
"matchedDomain": "u-tokyo.ac.jp",
"matchType": "parent",
"institutionCount": 1,
"institutions": [
{
"name": "University of Tokyo",
"country": "Japan",
"countryCode": "JP",
"domains": [
"u-tokyo.ac.jp"
],
"website": "http://www.u-tokyo.ac.jp/"
}
]
},
"meta": {
"endpoint": "universities",
"route": "/by-domain",
"params": {
"domain": "www.u-tokyo.ac.jp"
},
"generatedAt": "2026-09-15T19:47:18.000Z"
}
} A verdict, not a lookup: an address outside the list answers isUniversity=false with HTTP 200. Only a malformed address is a 400.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
email
required
| string | example: ada@mit.edu | The address to check. Only its domain is used; the local part is never matched, stored or validated beyond being non-empty. |
email string required The address to check. Only its domain is used; the local part is never matched, stored or validated beyond being non-empty.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
fields | list | example: email,domain | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: countryCode | Return all fields except these (comma-separated). |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
email | string | The address as supplied, trimmed. Nothing about the local part is verified. | ada@mit.edu |
domain | string | The address's domain, lowercased — the only part this route looks at. | mit.edu |
isUniversity | boolean | true when the domain, or a parent of it, is on the pinned community list. It does NOT mean the mailbox exists or that the institution is accredited. | true |
matchedDomain nullable | string | The listed domain that produced the verdict, or null when there was no match. | mit.edu |
matchType nullable | string | exact, parent, or null when isUniversity is false. | exact |
institutionCount | integer | Institutions listed under matchedDomain; 0 when there is no match, 2 for the four shared domains. | 1 |
name nullable | string | The institution, when exactly one is listed under matchedDomain. null when there is no match AND when the domain is shared by two institutions — use /by-domain to see both. | Massachusetts Institute of Technology |
country nullable | string | That institution's canonical ISO 3166-1 English country name, or null. | United States |
countryCode nullable | string | That institution's ISO 3166-1 alpha-2 code, or null. | US |
email string The address as supplied, trimmed. Nothing about the local part is verified.
example: ada@mit.edu
domain string The address's domain, lowercased — the only part this route looks at.
example: mit.edu
isUniversity boolean true when the domain, or a parent of it, is on the pinned community list. It does NOT mean the mailbox exists or that the institution is accredited.
example: true
matchedDomain string nullable The listed domain that produced the verdict, or null when there was no match.
example: mit.edu
matchType string nullable exact, parent, or null when isUniversity is false.
example: exact
institutionCount integer Institutions listed under matchedDomain; 0 when there is no match, 2 for the four shared domains.
example: 1
name string nullable The institution, when exactly one is listed under matchedDomain. null when there is no match AND when the domain is shared by two institutions — use /by-domain to see both.
example: Massachusetts Institute of Technology
country string nullable That institution's canonical ISO 3166-1 English country name, or null.
example: United States
countryCode string nullable That institution's ISO 3166-1 alpha-2 code, or null.
example: US
/api/universities/verify-email?email=ada@mit.edu {
"data": {
"email": "ada@mit.edu",
"domain": "mit.edu",
"isUniversity": true,
"matchedDomain": "mit.edu",
"matchType": "exact",
"institutionCount": 1,
"name": "Massachusetts Institute of Technology",
"country": "United States",
"countryCode": "US"
},
"meta": {
"endpoint": "universities",
"route": "/verify-email",
"params": {
"email": "ada@mit.edu"
},
"generatedAt": "2026-09-15T19:47:18.000Z"
}
} /api/universities/verify-email?email=someone@gmail.com {
"data": {
"email": "someone@gmail.com",
"domain": "gmail.com",
"isUniversity": false,
"matchedDomain": null,
"matchType": null,
"institutionCount": 0,
"name": null,
"country": null,
"countryCode": null
},
"meta": {
"endpoint": "universities",
"route": "/verify-email",
"params": {
"email": "someone@gmail.com"
},
"generatedAt": "2026-09-15T19:47:18.000Z"
}
} /api/universities/verify-email?email=student@cs.ox.ac.uk {
"data": {
"email": "student@cs.ox.ac.uk",
"domain": "cs.ox.ac.uk",
"isUniversity": true,
"matchedDomain": "ox.ac.uk",
"matchType": "parent",
"institutionCount": 1,
"name": "University of Oxford",
"country": "United Kingdom",
"countryCode": "GB"
},
"meta": {
"endpoint": "universities",
"route": "/verify-email",
"params": {
"email": "student@cs.ox.ac.uk"
},
"generatedAt": "2026-09-15T19:47:18.000Z"
}
} A pinned snapshot of the Hipo university-domains-list — 10,254 institutions across 199 countries and territories, carrying 10,574 distinct internet domains. It exists mainly to answer the reverse question: which institution owns this email domain?
Read this before you trust a hit. The upstream list is community-maintained and pull-request-driven. It is not an accredited register, not an official or government list, and not complete. A match means "this domain appears on a widely used community list", never "this institution is accredited" or "this address is genuine". Anything that must be authoritative belongs with the relevant national ministry or accreditor, not here.
What the three routes do
/api/universities lists institutions, filtered by country (ISO 3166-1 alpha-2) and search (a case-, diacritic- and apostrophe-insensitive match on the name, so universite finds Université). sort picks the stored country grouping or one global A→Z ordering, and offset pages through big countries — US has 2,348, JP has 572, IN has 477, CN has 398, DE has 321./api/universities/by-domain resolves a domain to the institution(s) listed under it. If the exact host is not listed, it walks up to the parent domain — cs.ox.ac.uk resolves to ox.ac.uk — and tells you which domain matched and whether the match was exact or parent. A domain with no listed ancestor is an honest 404./api/universities/verify-email answers the signup-form question directly: { isUniversity, name, country } for an address. A non-university address is not an error here — isUniversity: false is the answer, so the route never 404s.Honest edges, all of them upstream properties
jazanu.edu.sa, khio.no, marun.edu.tr, qu.edu.az). by-domain returns both rather than silently picking one; verify-email reports institutionCount: 2, leaves name and country null and warns, because there is no honest single answer./api/email-syntax for RFC 5321/5322 validation of the address shape.state-province column is not shipped: it is populated on 13.4% of rows and, where populated, mixes "CA" with "California", a city in the state slot and "City, State" blobs. /api/country-subdivisions ships the real ISO 3166-2 register instead.XK (Kosovo) are not carried, because this project's country table ships only officially assigned ISO 3166-1 alpha-2 codes and there is no canonical name to join.The snapshot is dated 2026-09-14, pinned by SHA-256 and re-verified by a committed parity script. Nothing is fetched while your request is served.
/api/universities/verify-email?email=ada@mit.edu returns isUniversity, the matched domain and the institution. A non-university address answers isUniversity: false with HTTP 200 — it is a verdict, not an error.
Yes. When the exact host is not listed, the lookup walks up to the parent domain and returns matchType: "parent" plus the matchedDomain that actually matched, so you can see how the answer was reached. It never falls back to a bare TLD.
No. It is a pinned snapshot of the community-maintained Hipo university-domains-list (MIT). It is not an accredited register and not complete — a match only means the domain is on that list.
Yes — upstream registers 4 domains to two institutions each (jazanu.edu.sa, khio.no, marun.edu.tr, qu.edu.az). by-domain returns every match instead of guessing, and verify-email reports institutionCount: 2 with a null name.
Because the upstream column is populated on only 13.4% of rows and is free text of mixed shape — the US rows alone mix CA with California and put cities in the state slot. Filtering on it would silently exclude most of the data, so it is not shipped at all.
Fake email addresses with name-derived usernames on guaranteed non-deliverable domains (example.com/net/org and .test) — or stamp your own with ?domain=.
Validate email syntax against RFC 5322, RFC 5321 transport limits or the HTML input profile — local/domain split and the exact rule that failed. No DNS, ever.
The current IANA delegated TLD ASCII list — search all labels, filter punycode IDNs, or look up one TLD with an honest 404.
Fake companies with locale-aware names, industry-flavored catchphrases, founding years, log-distributed headcounts and safe example.com websites and emails.
All 249 ISO 3166-1 countries and territories: codes, capitals, currencies, languages, area in km², continent, ccTLD, calling codes, flags and map points.