Blog

How a directory of 482 international schools is organised for search

International Schools DB lists 482 international schools in 16 countries and 63 cities. We went through the site in October 2026, page source included, because clients who want to build a listings site usually ask us the same things. How deep should the URLs go? Which things get a page of their own? And what do you do with a city that has only one entry?

Country, city and school pages

Every school sits under a country and a city, and the URL says so. Brighton College Bangkok is at /thailand/bangkok/brighton-college-bangkok, Bangkok is at /thailand/bangkok and Thailand is at /thailand. None of the URLs has an ID number or a query string in it.

So there are three kinds of landing page, and each one matches a different search. Someone typing "international schools in Thailand" wants the country page. Someone typing "international schools Bangkok" wants the city page, which lists 20 schools at the moment. A parent who already has a name and searches for it should land on that school's own page. The breadcrumb at the top of each page follows the same path and is marked up as a BreadcrumbList in the structured data, so a search engine can read the hierarchy from the page itself.

The Bangkok city page also has filters for age, curriculum, teaching language and a three-step price band, plus a map. Featured listings are shown first and carry a "Featured" label.

What one school page carries

Most of the work happens on the school pages. Each has a School object in JSON-LD with the street address, phone number, email, map coordinates and the school's own website under sameAs. Accreditations go in as credentials: the Brighton page lists CIS, COBIS and FOBISIA. On the page a parent sees the curriculum, teaching language, age range (2 to 18 at Brighton), annual fees in baht, student numbers and the year the school opened.

What we like here, from a build point of view, is that all of this is stored as separate fields. A fee range kept as two numbers can be printed on the listing, shown again on the city page and used by the price filter, and nobody has to retype it. Hand-written tables in articles are the exception, and they need checking whenever a school publishes new fees.

Uneven city counts

The counts per city vary a lot, which is normal for a directory that is still being filled. In Thailand, Bangkok has 20 schools, Chiang Mai, Pattaya and Phuket have 10 each, Koh Samui has 8, and Hua Hin and Rayong have 5 each. Kuala Lumpur, with 32, is the largest city page on the site. At the other end, the Lagos page has one school.

A page with one listing is thin, and the owner has a few options. It can stay indexed and probably rank poorly. It can carry a noindex tag until more schools are added. Or someone can write enough local information (areas, fee levels, term dates) to make the page useful with one listing on it. Universities DB, a university directory built on a similar URL pattern, sets noindex on countries with fewer than three universities. On ISDB the Lagos page is in the sitemap and has no noindex tag, so in an audit it would be one of the first pages we asked about.

The sitemap and llms.txt

The sitemap at /sitemap.xml has 635 URLs, and nearly all of them have a lastmod date. That date tells crawlers which pages changed since their last visit, which helps on a site where fees and contact details change from year to year.

ISDB also publishes /llms.txt. It is a plain-text file written for AI assistants. It says what the site is, gives the school, country and city counts, explains the URL pattern and asks to be cited as "International Schools DB (internationalschoolsdb.com)". It also says the fees are indicative and that "Featured" and "Premium" listings are paid placements. How many AI search tools read llms.txt files is still unclear. Writing one takes an afternoon, and any assistant that does fetch it gets the numbers and the caveats in the owner's words.

What we would look at next

The city pages have short, generic meta descriptions. Bangkok's reads "Find and compare international schools in Bangkok, Thailand." The page heading already says "20 international schools in Bangkok, Thailand", and the same number could go into the description and the title tag at no cost. Universities DB does this on its country pages ("Universities in Thailand (3)").

The city pages also open straight into the filters and the list, with no text about the city. ISDB has written guides for Bangkok, Phuket, Chiang Mai and Pattaya, and the city page links to them under "Articles about Bangkok". Two short paragraphs at the top of each city page, taken from those guides, would give it some text of its own: where the schools are clustered, and the usual fee range. On Bangkok that would mean naming areas such as Bang Na, Sukhumvit and Nichada Thani, all of which appear in the fee table in the site's Bangkok guide.