geo-countries-infos
TypeScript icon, indicating that this package has built-in type declarations

1.0.0 • Public • Published

🌍 geo-countries-infos

A TypeScript utility for scraping and querying detailed information about countries, including ISO codes, capitals, currencies, languages, EU/Schengen membership, and more.

  • 🔎 Scrapes data from geonames.org
  • 🌐 Supports filtering by continent, currency, language, EU & Schengen
  • 💾 Saves country data as countries.json
  • 💡 Provides an easy-to-use CountryRepository class

Installation

npm install geo-countries-infos

Scraping Country Data

The package includes a scraper that fetches country data from geonames.org and writes it to a local countries.json file.

Example

import { CountryScraper } from 'geo-countries-infos';

const scraper = new CountryScraper();

scraper.fetchCountries().then(countries => {
  console.log(`${countries.length} countries scraped successfully.`);
}).catch(console.error);

This generates a file countries.json in the root directory containing an array of country objects.


Using CountryRepository

After generating or loading the country data, you can use the CountryRepository to easily query it.

Example

import { readFileSync } from "fs";
import { CountryRepository } from 'geo-countries-infos';
import { Country } from 'geo-countries-infos/types/Country';

const rawData = readFileSync("countries.json", "utf-8");
const countries: Country[] = JSON.parse(rawData);
const repo = new CountryRepository(countries);

console.log(repo.getCountry("DE")); // Germany
console.log(repo.getEUCountries().map(c => c.name));
console.log(repo.getCountriesByCurrency("Euro (EUR)"));

API

CountryRepository

new CountryRepository(countries: Country[])

Methods

  • getCountries(): Country[] — All countries
  • getCountry(code: string): Country | undefined — By ISO Alpha-2 or Alpha-3
  • getEUCountries(): Country[]
  • getSchengenCountries(): Country[]
  • getCountriesByCurrency(currency: string): Country[]
  • getCountriesByLanguage(language: string): Country[]
  • getCountriesByContinent(continent: string): Country[] — E.g., "EU", "AS", "AF"

Testing Locally

To test your local scrape and query logic:

// testRepository.ts
import { readFileSync } from "fs";
import { CountryRepository } from './src/repositories/CountryRepository'; // adjust path as needed

const data = JSON.parse(readFileSync("countries.json", "utf-8"));
const repo = new CountryRepository(data);

console.log("EU countries:", repo.getEUCountries().length);

Run with:

npx ts-node testRepository.ts

📄 License

MIT


🙌 Acknowledgements

Package Sidebar

Install

npm i geo-countries-infos

Weekly Downloads

1

Version

1.0.0

License

MIT

Unpacked Size

4.61 kB

Total Files

3

Last publish

Collaborators

  • smesselier-sentis