Newton's Programmatic Measurements
    Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »

    jgeoippublic

    jGeoIP

    NPM version Travis CI Test coverage Dependencies status Dev Dependencies status License

    NPM install

    jGeoIP is a light Javascript API for reading new MaxMind's DB files (mmdb). jGeoIP stores the complete database in memory to speed up the performances. Besides, it implements a LRU (Least Recently Used) cache for optimizing reading performances for the most recently used IPs.

    Usage

    var jGeoIP = require('jgeoip');
    
    // Load synchronously MaxMind database in memory
    var geoip = new jGeoIP('path/to/maxmind.mmdb');
    
    // IPV4
    geoip.getRecord('8.8.8.8');
    
    //IPV6
    geoip.getRecord('2001:4860:4860::8844');
    

    API

    • .getMetadata() returns MaxMind's database metadata,
    • .getRecord(IP) returns IP data.

    Output

    GeoLite2-City.mmdb outputs:

    { city: 
       { geoname_id: 5375480,
         names: 
          { de: 'Mountain View',
            en: 'Mountain View',
            fr: 'Mountain View',
            ja: 'マウンテンビュー',
            ru: 'Маунтин-Вью',
            'zh-CN': '芒廷维尤' } },
      continent: 
       { code: 'NA',
         geoname_id: 6255149,
         names: 
          { de: 'Nordamerika',
            en: 'North America',
            es: 'Norteamérica',
            fr: 'Amérique du Nord',
            ja: '北アメリカ',
            'pt-BR': 'América do Norte',
            ru: 'Северная Америка',
            'zh-CN': '北美洲' } },
      country: 
       { geoname_id: 6252001,
         iso_code: 'US',
         names: 
          { de: 'USA',
            en: 'United States',
            es: 'Estados Unidos',
            fr: 'États-Unis',
            ja: 'アメリカ合衆国',
            'pt-BR': 'Estados Unidos',
            ru: 'Сша',
            'zh-CN': '美国' } },
      location: 
       { latitude: 37.386,
         longitude: -122.0838,
         metro_code: 807,
         time_zone: 'America/Los_Angeles' },
      postal: { code: '94040' },
      registered_country: 
       { geoname_id: 6252001,
         iso_code: 'US',
         names: 
          { de: 'USA',
            en: 'United States',
            es: 'Estados Unidos',
            fr: 'États-Unis',
            ja: 'アメリカ合衆国',
            'pt-BR': 'Estados Unidos',
            ru: 'Сша',
            'zh-CN': '美国' } },
      subdivisions: [ { geoname_id: 5332921, iso_code: 'CA', names: [Object] } ] }
    

    Some IP addresses do not report city information. Most IPv6 addresses report country information only.

    GeoLite2-Country.mmdb outputs:

    { continent: 
       { code: 'NA',
         geoname_id: 6255149,
         names: 
          { de: 'Nordamerika',
            en: 'North America',
            es: 'Norteamérica',
            fr: 'Amérique du Nord',
            ja: '北アメリカ',
            'pt-BR': 'América do Norte',
            ru: 'Северная Америка',
            'zh-CN': '北美洲' } },
      country: 
       { geoname_id: 6252001,
         iso_code: 'US',
         names: 
          { de: 'USA',
            en: 'United States',
            es: 'Estados Unidos',
            fr: 'États-Unis',
            ja: 'アメリカ合衆国',
            'pt-BR': 'Estados Unidos',
            ru: 'Сша',
            'zh-CN': '美国' } },
      registered_country: 
       { geoname_id: 6252001,
         iso_code: 'US',
         names: 
          { de: 'USA',
            en: 'United States',
            es: 'Estados Unidos',
            fr: 'États-Unis',
            ja: 'アメリカ合衆国',
            'pt-BR': 'Estados Unidos',
            ru: 'Сша',
            'zh-CN': '美国' } } }
    

    License

    MIT.

    install

    npm i jgeoip

    Downloadsweekly downloads

    239

    version

    0.3.0

    license

    MIT

    repository

    githubgithub

    last publish

    collaborators

    • avatar