PageSourceSearch

https://docs.ipdata.co/docs/publishing-a-geofeed

html ipdata.co collected 2026-09-24 15:34:02 UTC 148,872 bytes, 187 lines download raw bytes

1<!DOCTYPE html><html lang="en" style="" data-color-mode="system" class=" useReactApp  "><head><meta charset="utf-8"><link rel="preconnect" href="https://cdn.readme.io"><link rel="preconnect" href="https://cdn.readme.io" crossorigin><meta name="readme-deploy" content="5.898.0"><meta name="readme-subdomain" content="ipdata"><meta name="readme-repo" content="ipdata-2cdff7fed90b"><meta name="readme-project-flags" content="utU1DxgcxIQXBw4uS7H+5A==:RehCIuxivplv6pMk09sI1gvAEehek1y7biVccDUcPryMj2uqbGfg4ODrankufqiWt8+CmOEpMCsimIkmvYsch6TKuEGC8EP8+Ksf+yXsRRvD7yZO2/L462cmlYYKQ7/U/Nbwcn260yrkfT4vx0T6dtMcpQGrcHTNwiZkGB6Zoes="><meta name="readme-version" content="1"><title>Publishing a Geofeed</title><meta name="description" content="If you'd like to correct the geolocation information associated with the networks you own or administer for your clients the preferred way to do this is via geofeeds. What is a Geofeed? Geofeeds are the gold standard for sharing geolocation information and have been discussed and described in great…" data-rh="true"><meta property="og:title" content="Publishing a Geofeed" data-rh="true"><meta property="og:description" content="If you'd like to correct the geolocation information associated with the networks you own or administer for your clients the preferred way to do this is via geofeeds. What is a Geofeed? Geofeeds are the gold standard for sharing geolocation information and have been discussed and described in great…" data-rh="true"><meta property="og:site_name" content="ipdata"><meta name="twitter:title" content="Publishing a Geofeed" data-rh="true"><meta name="twitter:description" content="If you'd like to correct the geolocation information associated with the networks you own or administer for your clients the preferred way to do this is via geofeeds. What is a Geofeed? Geofeeds are the gold standard for sharing geolocation information and have been discussed and described in great…" data-rh="true"><meta name="twitter:card" content="summary_large_image"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta property="og:image" content="https://cdn.readme.io/og-image/create?type=docs&amp;title=Publishing%20a%20Geofeed&amp;projectTitle=ipdata&amp;description=If%20you'd%20like%20to%20correct%20the%20geolocation%20information%20associated%20with%20the%20networks%20you%20own%20or%20administer%20for%20your%20clients%20the%20preferred%20way%20to%20do%20this%20is%20via%20geofeeds.%20What%20is%20a%20Geofeed%3F%20Geofeeds%20are%20the%20gold%20standard%20for%20sharing%20geolocation%20information%20and%20have%20been%20discussed%20and%20described%20in%20great%E2%80%A6&amp;logoUrl=https%3A%2F%2Ffiles.readme.io%2F93bacbc-ipdata--3-.svg&amp;color=%235770FF&amp;variant=light" data-rh="true"><meta name="twitter:image" content="https://cdn.readme.io/og-image/create?type=docs&amp;title=Publishing%20a%20Geofeed&amp;projectTitle=ipdata&amp;description=If%20you'd%20like%20to%20correct%20the%20geolocation%20information%20associated%20with%20the%20networks%20you%20own%20or%20administer%20for%20your%20clients%20the%20preferred%20way%20to%20do%20this%20is%20via%20geofeeds.%20What%20is%20a%20Geofeed%3F%20Geofeeds%20are%20the%20gold%20standard%20for%20sharing%20geolocation%20information%20and%20have%20been%20discussed%20and%20described%20in%20great%E2%80%A6&amp;logoUrl=https%3A%2F%2Ffiles.readme.io%2F93bacbc-ipdata--3-.svg&amp;color=%235770FF&amp;variant=light" data-rh="true"><meta property="og:image:width" content="1200"><meta property="og:image:height" content="630"><meta name="dateModified" content="2025-11-11T22:57:51.000Z" data-rh="true"><meta property="article:modified_time" content="2025-11-11T22:57:51.000Z" data-rh="true"><meta property="og:updated_time" content="2025-11-11T22:57:51.000Z" data-rh="true">
1<script type="application/ld+json" data-rh="true">{"@context":"https://schema.org","@type":"TechArticle","headline":"Publishing a Geofeed","dateModified":"2025-11-11T22:57:51.000Z"}</script>
1<link id="favicon" rel="shortcut icon" href="https://files.readme.io/8c0ba2a-favicon.ico" type="image/x-icon"><link rel="canonical" href="https://docs.ipdata.co/docs/publishing-a-geofeed">
1<script src="https://cdn.readme.io/public/js/cash-dom.min.js?1790177783981"></script>
1<link data-chunk="Footer" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/Footer.769aa3e9fc194cc963d9.css">
2<link data-chunk="components-AIDropdown" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/components-AIDropdown.99bc192bac06a6bceec5.css">
3<link data-chunk="RMDXISH" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/RMDXISH.159422ed8463cae8cb3f.css">
4<link data-chunk="RMDXISH" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/2985.447b14d171badee0cdb5.css">
5<link data-chunk="Doc" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/Doc.c5cf72a4a52b4bcb7f71.css">
6<link data-chunk="Header" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/Header.c5ef215a568f1fcad11c.css">
7<link data-chunk="Header" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/ui-styles.3bb8dfd62bfe23d5861c.css">
8<link data-chunk="Containers-EndUserContainer" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/Containers-EndUserContainer.fabcecc828e1a730f2bf.css">
9<link data-chunk="main" rel="preload" as="style" href="https://cdn.readme.io/public/hub/web/main.991bb7c0f657ffa6fa37.css">
10<link data-chunk="main" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/main.4e50b24c7f06c6af8cb6.js">
11<link data-chunk="routes-SuperHub" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/routes-SuperHub.8ec58d43360ea892f16f.js">
12<link data-chunk="Containers-EndUserContainer" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/Containers-EndUserContainer.ac7db409f2472bbd2cd5.js">
13<link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/4011.98c6655a4c5d99e73da8.js">
14<link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/6269.156e27ce440c3a7cc1e9.js">
15<link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/444.f4f32c5edf66b173ef40.js">
16<link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/4148.e1845a9749012b95cd9e.js">
17<link data-chunk="Header" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/Header.772b278c407ec7e69244.js">
18<link data-chunk="routes-SuperHub-Routes" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/routes-SuperHub-Routes.fd8a1380ae3da411e4dd.js">
19<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/7137.6d393781d59245222014.js">
20<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/9977.a933c2a0ee96169ffef7.js">
21<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/6146.e0750bc6839fd326854d.js">
22<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/441.0bca8969b4854384884a.js">
23<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/8836.278c0fa83edd766823b0.js">
24<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/5446.66a863132dae0648c54c.js">
25<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/1347.6265ddeff9b9202723b8.js">
26<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/1306.50782c5e797f388d05de.js">
27<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/2966.05dc26770a0fac8b9528.js">
28<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/8813.497a2c9bf6a604146c74.js">
29<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/8444.3f94ebed77edcadbdcc7.js">
30<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/7358.44455c95287022a10b96.js">
31<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/6383.4646e3d98ed35969c597.js">
32<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/9127.29da8b9a2439909c7bbe.js">
33<link data-chunk="Doc" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/Doc.d64ccc4a89ab53c86e70.js">
34<link data-chunk="ConnectMetadata" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/ConnectMetadata.8e41ab6b4d0ad2a555e4.js">
35<link data-chunk="RMDXISH" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/2712.833c6d420da7e5c75746.js">
36<link data-chunk="RMDXISH" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/779.787e23290115569e9f85.js">
37<link data-chunk="RMDXISH" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/97.0fd36ce7b76243521f50.js">
38<link data-chunk="RMDXISH" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/1297.182c1003775163a16ebe.js">
39<link data-chunk="RMDXISH" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/2985.652001a1e688fad77fc3.js">
40<link data-chunk="RMDXISH" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/RMDXISH.0472c9795ee88f1a2788.js">
41<link data-chunk="components-AIDropdown" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/4818.840c4c8b487a740167cc.js">
42<link data-chunk="components-AIDropdown" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/components-AIDropdown.88def46aeefbfb1f9434.js">
43<link data-chunk="Footer" rel="preload" as="script" href="https://cdn.readme.io/public/hub/web/F
43ooter.72b0e0d83d6f8b281611.js">
44<link data-chunk="main" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/main.991bb7c0f657ffa6fa37.css">
45<link data-chunk="Containers-EndUserContainer" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/Containers-EndUserContainer.fabcecc828e1a730f2bf.css">
46<link data-chunk="Header" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/ui-styles.3bb8dfd62bfe23d5861c.css">
47<link data-chunk="Header" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/Header.c5ef215a568f1fcad11c.css">
48<link data-chunk="Doc" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/Doc.c5cf72a4a52b4bcb7f71.css">
49<link data-chunk="RMDXISH" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/2985.447b14d171badee0cdb5.css">
50<link data-chunk="RMDXISH" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/RMDXISH.159422ed8463cae8cb3f.css">
51<link data-chunk="components-AIDropdown" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/components-AIDropdown.99bc192bac06a6bceec5.css">
52<link data-chunk="Footer" rel="stylesheet" href="https://cdn.readme.io/public/hub/web/Footer.769aa3e9fc194cc963d9.css"><!-- CUSTOM CSS--><style title="rm-custom-css">:root{--project-color-primary:#5770FF;--project-color-inverse:#fff;--recipe-button-color:#5770FF;
52--recipe-button-color-hover:#0024f0;--recipe-button-color-active:#001cbd;--recipe-button-color-focus:rgba(87, 112, 255, 0.25);--recipe-button-color-disabled:#ffffff}[id=enterprise] .ReadMeUI[is=AlgoliaSearch]{--project-color-primary:#5770FF;--project-color-inverse:#fff}a{color:var(--color-link-primary,#5770ff)}a:hover{color:var(--color-link-primary-darken-5,#0024f0)}a.text-muted:hover{color:var(--color-link-primary,#5770ff)}.btn.btn-primary{background-color:#5770ff}.btn.btn-primary:hover{background-color:#0024f0}.theme-line #hub-landing-top h2{color:#5770ff}#hub-landing-top .btn:hover{color:#5770ff}.theme-line #hub-landing-top .btn:hover{color:#fff}.theme-solid header#hub-header #header-top{background-color:#5770ff}.theme-solid.header-gradient header#hub-header #header-top{background:linear-gradient(to bottom,#5770ff,#0a2fff)}.theme-solid.header-custom header#hub-header #header-top{background-image:url("undefined")}.theme-line header#hub-header #header-top{border-bottom-color:#5770ff}.theme-line header#hub-header #header-top .btn{background-color:#5770ff}header#hub-header #header-top #header-logo{width:134px;height:40px;margin-top:0;background-image:url("https://files.readme.io/4f34357-ipdata-logo-white.svg")}#hub-subheader-parent #hub-subheader .hub-subheader-breadcrumbs .dropdown-menu a:hover{background-color:#5770ff}#subheader-links a.active{color:#5770ff!important;box-shadow:inset 0 -2px 0 #5770ff}#subheader-links a:hover{color:#5770ff!important;box-shadow:inset 0 -2px 0 #5770ff;opacity:.7}.discussion .submit-vote.submit-vote-parent.voted a.submit-vote-button{background-color:#5770ff}section#hub-discuss .discussion a .discuss-body h4{color:#5770ff}section#hub-discuss .discussion a:hover .discuss-body h4{color:#0024f0}#hub-subheader-parent #hub-subheader.sticky-header.sticky{border-bottom-color:#5770ff}#hub-subheader-parent #hub-subheader.sticky-header.sticky .search-box{border-bottom-color:#5770ff}#hub-search-results h3 em{color:#5770ff}.main_background,.tag-item{background:#5770ff!important}.main_background:hover{background:#0024f0!important}.main_color{color:#5770ff!important}.border_bottom_main_color{border-bottom:2px solid #5770ff}.main_color_hover:hover{color:#5770ff!important}section#hub-discuss h1{color:#5770ff}#hub-reference .hub-api .api-definition .api-try-it-out.active{border-color:#5770ff;background-color:#5770ff}#hub-reference .hub-api .api-definition .api-try-it-out.active:hover{background-color:#0024f0;border-color:#0024f0}#hub-reference .hub-api .api-definition .api-try-it-out:hover{border-color:#5770ff;color:#5770ff}#hub-reference .hub-reference .logs .logs-empty .logs-login-button,#hub-reference .hub-reference .logs .logs-login .logs-login-button{background-color:var(--project-color-primary,#5770ff);border-color:var(--project-color-primary,#5770ff)}#hub-reference .hub-reference .logs .logs-empty .logs-login-button:hover,#hub-reference .hub-reference .logs .logs-login .logs-login-button:hover{background-color:#0024f0;border-color:#0024f0}#hub-reference .hub-reference .logs .logs-empty>svg>path,#hub-reference .hub-reference .logs .logs-login>svg>path{fill:#5770FF;fill:var(--project-color-primary,#5770FF)}#hub-reference .hub-reference .logs:last-child .logs-empty,#hub-reference .hub-reference .logs:last-child .logs-login{margin-bottom:35px}#hub-reference .hub-reference .hub-reference-section .hub-reference-left header .hub-reference-edit:hover{color:#5770ff}.main-color-accent{border-bottom:3px solid #5770ff;padding-bottom:8px}/*! BEGIN HUB_CUSTOM_STYLES *//*! END HUB_CUSTOM_STYLES */</style>
52<script>!function(){var e=window.Cohere=window.Cohere||[];if(e.invoked)console.error("Tried to load Cohere twice");else{e.invoked=!0,e.snippet="0.2",e.methods=["init","identify","stop","showCode","getSessionUrl","makeCall","addCallStatusListener","removeCallStatusListener","widget"],e.methods.forEach(function(o){e[o]=function(){var t=Array.prototype.slice.call(arguments);t.unshift(o),e.push(t)}});var o=document.createElement("script");o.type="text/javascript",o.async=!0,o.src="https://static.cohere.so/main.js",o.crossOrigin="anonymous";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(o,t)}}();window.Cohere.init("XTAp8aIl5EMb83YtSw-ohg5U");</script>
52<meta name="loadedProject" content="ipdata">
52<script>(function () {
53  var scheme = 'system';
54  var mode = scheme;
55
56  if (scheme === 'system') {
57    try {
58      mode = window.localStorage.getItem('color-scheme');
59    } catch (e) {
60      // localStorage throws in some privacy modes
61    }
62  }
63
64  // anything else (null on a first visit, a stale poisoned value) falls back to the OS
65  if (mode !== 'light' && mode !== 'dark' && mode !== 'system') mode = 'system';
66
67  document.documentElement.setAttribute('data-color-mode', mode);
68})();</script>
68<script id="config" type="application/json" data-json="{&quot;algoliaIndex&quot;:&quot;readme_search_v2&quot;,&quot;amplitude&quot;:{&quot;apiKey&quot;:&quot;8b550cf334a130e3d6ea41a88b894d8&quot;,&quot;enabled&quot;:&quot;true&quot;,&quot;sessionReplay&quot;:{&quot;enabled&quot;:&quot;true&quot;,&quot;sampleRate&quot;:&quot;0.1&quot;}},&quot;api&quot;:{&quot;upload&quot;:{&quot;fileSizeLimit&quot;:10485760,&quot;fileSizeLimitFormatted&quot;:&quot;10MB&quot;}},&quot;asset_url&quot;:&quot;https://cdn.readme.io&quot;,&quot;dashDomain&quot;:&quot;dash.readme.com&quot;,&quot;domain&quot;:&quot;readme.io&quot;,&quot;domainFull&quot;:&quot;https://dash.readme.com&quot;,&quot;encryptedLocalStorageKey&quot;:&quot;ekfls-2025-03-27&quot;,&quot;fullstory&quot;:{&quot;enabled&quot;:true,&quot;orgId&quot;:&quot;FSV9A&quot;},&quot;git&quot;:{&quot;preview&quot;:&quot;https://githug-prod.gitto.rdme.io&quot;,&quot;sync&quot;:{&quot;bitbucket&quot;:{&quot;installationLink&quot;:&quot;https://developer.atlassian.com/console/install/310151e6-ca1a-4a44-9af6-1b523fea0561?signature=AYABeMn9vqFkrg%2F1DrJAQxSyVf4AAAADAAdhd3Mta21zAEthcm46YXdzOmttczp1cy13ZXN0LTI6NzA5NTg3ODM1MjQzOmtleS83MDVlZDY3MC1mNTdjLTQxYjUtOWY5Yi1lM2YyZGNjMTQ2ZTcAuAECAQB4IOp8r3eKNYw8z2v%2FEq3%2FfvrZguoGsXpNSaDveR%2FF%2Fo0BHUxIjSWx71zNK2RycuMYSgAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDOJgARbqndU9YM%2FRdQIBEIA7unpCah%2BIu53NA72LkkCDhNHOv%2BgRD7agXAO3jXqw0%2FAcBOB0%2F5LmpzB5f6B1HpkmsAN2i2SbsFL30nkAB2F3cy1rbXMAS2Fybjphd3M6a21zOmV1LXdlc3QtMTo3MDk1ODc4MzUyNDM6a2V5LzQ2MzBjZTZiLTAwYzMtNGRlMi04NzdiLTYyN2UyMDYwZTVjYwC4AQICAHijmwVTMt6Oj3F%2B0%2B0cVrojrS8yZ9ktpdfDxqPMSIkvHAGT%2FMTvCxC3XwnwlulZe975AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMMUUe9d1YmFOo373TAgEQgDuJo7TayM6NL19Sj9RPooRrl8rYxwKgvu9gkLNc3GuyyovWI1xA2qTr0LQzMRsf3imrAWsywzPcsjnvuAAHYXdzLWttcwBLYXJuOmF3czprbXM6dXMtZWFzdC0xOjcwOTU4NzgzNTI0MzprZXkvNmMxMjBiYTAtNGNkNS00OTg1LWI4MmUtNDBhMDQ5NTJjYzU3ALgBAgIAeLKa7Dfn9BgbXaQmJGrkKztjV4vrreTkqr7wGwhqIYs5AZR28Sibv2eBxSIg2MydtvEAAAB%2BMHwGCSqGSIb3DQEHBqBvMG0CAQAwaAYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAzzWhThsIgJwrr%2FY2ECARCAOxoaW9pob21lweyAfrIm6Fw7gd8D%2B%2F8LHk4rl3jjULDM35%2FVPuqBrqKunYZSVCCGNGB3RqpQJr%2FasASiAgAAAAAMAAAQAAAAAAAAAAAAAAAAAEokowLKsF1tMABEq%2BKNyJP%2F%2F%2F%2F%2FAAAAAQAAAAAAAAAAAAAAAQAAADJLzRcp6MkqKR43PUjOiRxxbxXYhLc6vFXEutK3%2BQ71yuPq4dC8pAHruOVQpvVcUSe8dptV8c7wR8BTJjv%2F%2FNe8r0g%3D&amp;product=bitbucket&quot;}}},&quot;hubspot&quot;:{&quot;portalId&quot;:&quot;9401557&quot;},&quot;metrics&quot;:{&quot;billingCronEnabled&quot;:&quot;true&quot;,&quot;dashUrl&quot;:&quot;https://m.readme.io&quot;,&quot;defaultUrl&quot;:&quot;https://m.readme.io&quot;,&quot;exportMaxRetries&quot;:12,&quot;wsUrl&quot;:&quot;wss://m.readme.io&quot;},&quot;micro&quot;:{&quot;baseUrl&quot;:&quot;https://micro-beta.readme.com&quot;},&quot;novuNotification&quot;:{&quot;appId&quot;:&quot;ob_MiAPOPqgP&quot;,&quot;showUnreleasedWorkflows&quot;:false},&quot;proxyUrl&quot;:&quot;https://try.readme.io&quot;,&quot;readmeRecaptchaSiteKey&quot;:&quot;6LesVBYpAAAAAESOCHOyo2kF9SZXPVb54Nwf3i2x&quot;,&quot;releaseVersion&quot;:&quot;5.898.0&quot;,&quot;reservedWords&quot;:{&quot;tools&quot;:[&quot;execute-request&quot;,&quot;get-endpoint&quot;,&quot;get-server-variables&quot;,&quot;list-endpoints&quot;,&quot;list-specs&quot;,&quot;search-endpoints&quot;,&quot;search&quot;,&quot;fetch&quot;]},&quot;sentry&quot;:{&quot;dsn&quot;:&quot;https://[email protected]/2052166&quot;,&quot;enabled&quot;:true},&quot;shMigration&quot;:{&quot;promoVideo&quot;:&quot;&quot;,&quot;forceWaitlist&quot;:false,&quot;migrationPreview&quot;:false},&quot;sslBaseDomain&quot;:&quot;readmessl.com&quot;,&quot;sslGenerationService&quot;:&quot;ssl.readmessl.com&quot;,&quot;superHub&quot;:{&quot;newProjectsEnabled&quot;:true},&quot;tiptapCloud&quot;:{&quot;appId&quot;:&quot;8mzorjl9&quot;,&quot;url&quot;:&quot;wss://8mzorjl9.collab.tiptap.cloud&quot;},&quot;wootric&quot;:{&quot;accountToken&quot;:&quot;NPS-122b75a4&quot;,&quot;enabled&quot;:true}}"></script>
68</head><body class="body-none theme-solid header-solid header-bg-size-auto header-bg-pos-tl header-overlay-triangles reference-layout-row lumosity-normal  is-hub-themed"><div style="display:none" aria-hidden="true">For AI agents: visit https://docs.ipdata.co/llms.txt for an index of all pages formatted in Markdown and endpoints in OpenAPI. Append .md to any documentation page URL to get its markdown version.</div><div id="ssr-top"></div><div id="ssr-main"><div class="App ThemeContext ThemeContext_dark ThemeContext_classic ThemeContext_spacing_legacy ThemeContext_solid" style="--color-primary:#5770FF;--color-primary-inverse:#fff;--color-primary-alt:#0a2fff;--color-primary-darken-10:#2445ff;--color-primary-darken-20:#0024f0;--color-primary-alpha-25:rgba(87, 112, 255, 0.25);--color-link-primary:#5770FF;--color-link-primary-dark-override:#5770FF;--color-link-button:#5770FF;--color-link-button-text:#fff;--color-link-button-border:rgba(255, 255, 255, 0.2);--color-link-button-darken-5:#3d5aff;--color-link-button-darken-10:#2445ff;--color-link-button-alpha-50:rgba(87, 112, 255, 0.5);--color-link-button-alpha-25:rgba(87, 112, 255, 0.25);--color-link-primary-darken-5:#3d5aff;--color-link-primary-darken-10:#2445ff;--color-link-primary-darken-20:#0024f0;--color-link-primary-alpha-50:rgba(87, 112, 255, 0.5);--color-link-primary-alpha-25:rgba(87, 112, 255, 0.25);--color-link-background:rgba(87, 112, 255, 0.09);--color-link-background-dark-override:rgba(87, 112, 255, 0.09);--color-link-text:#fff;--color-tab-active:#5770FF;--color-login-link:#5770FF;--color-login-link-text:#fff;--color-login-link-darken-10:#2445ff;--color-login-link-primary-alpha-50:rgba(87, 112, 255, 0.5)"><div class="SuperHub2RNxzk6HzHiJ rm-ReadMe"><div class="ContentWithOwlbotx4PaFDoA1KMz"><div class="ContentWithOwlbot-content2X1XexaN8Lf2"><header class="Header3zzata9F_ZPQ rm-Header_classic Header_collapsible3n0YXfOvb_Al rm-Header"><div class="rm-Header-top Header-topuTMpygDG4e1V Header-top_classic3g7Q6zoBy8zh"><div class="rm-Container rm-Container_flex"><div style="outline:none" tabindex="-1"><a href="#content" target="_self" class="Button Button_md rm-JumpTo Header-jumpTo3IWKQXmhSI5D Button_primary">Jump to Content</a></div><div class="rm-Header-left Header-leftADQdGVqx1wqU"><a class="rm-Logo Header-logo1Xy41PtkzbdG" href="/" target="_self"><img alt="ipdata" class="rm-Logo-img Header-logo-img3YvV4lcGKkeb" src="https://files.readme.io/4f34357-ipdata-logo-white.svg" style="aspect-ratio:auto 1620 / 485"/></a></div><div class="rm-Header-left Header-leftADQdGVqx1wqU Header-left_mobile1RG-X93lx6PF"><div><button aria-label="Toggle navigation menu" class="icon-menu menu3d6DYNDa3tk5" type="button"></button><div class=""><div class="Flyout95xhYIIoTKtc undefined rm-Flyout" data-testid="flyout"><div class="MobileFlyout1hHJpUd-nYkd"><a aria-current="page" class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck-  active" href="/docs" target="_self"><i aria-hidden="true" class="icon-guides NavItem-badge1qOxpfTiALoz rm-Header-bottom-link-icon"></i><span class="NavItem-textSlZuuL489uiw">Documentation</span></a><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- " href="/reference" target="_self"><i aria-hidden="true" class="icon-references NavItem-badge1qOxpfTiALoz rm-Header-bottom-link-icon"></i><span class="NavItem-textSlZuuL489uiw">API Reference</span></a><div class="NavItem-item1gDDTqaXGhm1 NavItem-item_inactiveMQoyhN045qAn">v1</div><hr class="MobileFlyout-divider10xf7R2X1MeW"/><a class="rm-MobileFlyout-item NavItem-item1gDDTqaXGhm1 NavItem-item_mobile1qG3gd-Mkck- NavItem_dropdown-muted1xJVuczwGc74" href="/login?redirect_uri=/docs/publishing-a-geofeed" target="_self" to="/login?redirect_uri=/docs/publishing-a-geofeed">Log In</a><a class="MobileFlyout-logo3Lq1eTlk1K76 Header-logo1Xy41PtkzbdG rm-Logo" href="/" target="_self"><img alt="ipdata" class="Header-logo-img3YvV4lcGKkeb rm-Logo-img" src="https://files.readme.io/4f34357-ipdata-logo-white.svg"/></a></div></div></div></div><div class="Header-left-nav2xWPWMNHOGf_"><i aria-hidden="true" class="icon-guides Header-left-nav-icon10glJKFwewOv"></i>Documentation</div></div><div class="rm-Header-right Header-right21PC2XTT6aMg"><span class="Header-right_desktop14ja01RUQ7HE"><a class="Header-link2tXYTgXq85zW NavItem2xSfFaVqfRjy Button Button_md Button_slate_text rm-Header-top-link rm-Header-top-link_login" href="/login?redirect_uri=/docs/publishing-a-geofeed" target="_self">Log In</a></span><div class="Header-searchtb6Foi0-D9Vx"><button aria-label="Search ⌘k" class="rm-SearchToggle" data-symbol
68="⌘"><div class="rm-SearchToggle-icon icon-search1"></div></button></div><div class="ThemeToggle-wrapper1ZcciJoF3Lq3 Dropdown Dropdown_closed" data-testid="dropdown-container"><button aria-label="Toggle color scheme" class="rm-ThemeToggle ThemeToggle2xLp9tbEJ0XB Button Button_md Button_slate_text Dropdown-toggle" id="ThemeToggle-button-Rip9cla" type="button" aria-haspopup="dialog"><svg aria-labelledby="ThemeToggle-button-Rip9cla" class="Icon ThemeToggle-Icon22I6nqvxacln ThemeToggle-Icon_active2ocLaPY47U28" role="img" viewBox="0 0 24 24"><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M12 2v2"></path><path d="M14.837 16.385a6 6 0 1 1-7.223-7.222c.624-.147.97.66.715 1.248a4 4 0 0 0 5.26 5.259c.589-.255 1.396.09 1.248.715"></path><path d="M16 12a4 4 0 0 0-4-4"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="m19 5-1.256 1.256"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M20 12h2"></path></svg><svg aria-labelledby="ThemeToggle-button-Rip9cla" class="Icon ThemeToggle-Icon22I6nqvxacln ThemeToggle-Icon_dark3c1eP_qTU7uF" role="img" viewBox="0 0 24 24"><path d="M19 14.79C18.8427 16.4922 18.2039 18.1144 17.1582 19.4668C16.1126 20.8192 14.7035 21.8458 13.0957 22.4265C11.4879 23.0073 9.74798 23.1181 8.0795 22.7461C6.41102 22.3741 4.88299 21.5345 3.67423 20.3258C2.46546 19.117 1.62594 17.589 1.25391 15.9205C0.881876 14.252 0.992717 12.5121 1.57346 10.9043C2.1542 9.29651 3.18083 7.88737 4.53321 6.84175C5.8856 5.79614 7.5078 5.15731 9.21 5C8.21341 6.34827 7.73385 8.00945 7.85853 9.68141C7.98322 11.3534 8.70386 12.9251 9.8894 14.1106C11.0749 15.2961 12.6466 16.0168 14.3186 16.1415C15.9906 16.2662 17.6517 15.7866 19 14.79Z"></path><path class="ThemeToggle-Icon-star2kOSzvXrVCbT" d="M18.3707 1C18.3707 3.22825 16.2282 5.37069 14 5.37069C16.2282 5.37069 18.3707 7.51313 18.3707 9.74138C18.3707 7.51313 20.5132 5.37069 22.7414 5.37069C20.5132 5.37069 18.3707 3.22825 18.3707 1Z"></path></svg><svg aria-labelledby="ThemeToggle-button-Rip9cla" class="Icon ThemeToggle-Icon22I6nqvxacln" role="img" viewBox="0 0 24 24"><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M12 1V3"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M18.36 5.64L19.78 4.22"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M21 12H23"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M18.36 18.36L19.78 19.78"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M12 21V23"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M4.22 19.78L5.64 18.36"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M1 12H3"></path><path class="ThemeToggle-Icon-raysbSO3FKsq2hn" d="M4.22 4.22L5.64 5.64"></path><path d="M12 17C14.7614 17 17 14.7614 17 12C17 9.23858 14.7614 7 12 7C9.23858 7 7 9.23858 7 12C7 14.7614 9.23858 17 12 17Z"></path></svg></button></div></div></div></div><div class="Header-bottom2eLKOFXMEmh5 Header-bottom_classic rm-Header-bottom"><div class="rm-Container rm-Container_flex"><nav aria-label="Primary navigation" class="Header-leftADQdGVqx1wqU Header-subnavnVH8URdkgvEl Header-subnav_links1fSsYMNRxHdu" role="navigation"><span class="Truncate1OzxBYrNNfH3 VersionDropdown1GXDUTxJ1T95 VersionDropdown_inactive rm-Header-bottom-link" style="--Truncate-max-width:150px">v1</span><a aria-current="page" class="Button Button_md rm-Header-link rm-Header-bottom-link Button_slate_text Header-bottom-link_mobile  active" href="/docs" target="_self"><i aria-hidden="true" class="icon-guides rm-Header-bottom-link-icon"></i><span>Documentation</span></a><a class="Button Button_md rm-Header-link rm-Header-bottom-link Button_slate_text Header-bottom-link_mobile " href="/reference" target="_self"><i aria-hidden="true" class="icon-references rm-Header-bottom-link-icon"></i><span>API Reference</span></a><div class="Header-subnav-tabyNLkcOA6xAra" style="transform:translateX(0px);width:0"></div></nav><button align="center" justify="between" style="--flex-gap:var(--xs)" class="Button Button_sm Flex Flex_row MobileSubnav1DsTfasXloM2 Button_secondary Button_secondary_outline" type="button"><span class="Button-label">Publishing a Geofeed</span><span class="IconWrapper Icon-wrapper2z2wVIeGsiUy"><svg fill="none" viewBox="0 0 24 24" class="Icon Icon3_D2ysxFZ_ll Icon-svg2Lm7f6G9Ly5a" data-name="chevron-up-down" role="img" style="--icon-color:inherit;--icon-size:inherit;--icon-stroke-width:2px"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m6 16 6 6 6-6M18 8l-6-6-6 6" class="icon-stroke-width"></path></svg></span></button></div></div><div class="hub-search-results--reactApp " id="hub-search-results"><div class="hub-container"><div class="modal-backdrop rm-SearchModal rm-SearchModal_classic" role="button" tabindex="0"></div></div></div></header><main class="SuperHubDoc3Z-1XSVTg-Q1 rm-Guides" id="content"><div class="SuperHubDoc-container2RY1FPE4Ewze rm-Container rm-Container_flex"><nav aria-label="Secondary navigation" class="rm-Sidebar hub-sidebar reference-redesign Nav3C5f8FcjkaHj rm-Sidebar_guides" id="hub-sidebar" role="navigation"><div class="Sidebar1t2G1ZJq-vU1 rm-Sidebar hub-sidebar-content"><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">Get Started</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/getting-started"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Quick Start</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/install-the-ipdata-cli"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Install the ipdata CLI</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/client-side-vs-server-side"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">
68Client-side vs Server-side</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/official-client-libraries"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Official Client Libraries</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">Available data</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/geolocation"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Geolocation</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/mobile-carrier-detection"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Mobile Carrier</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/timezone-detection"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Timezone</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/currency-detection"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Currency</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/proxy-tor-and-threat-detection"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Threat Intelligence</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/asn-data"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Basic ASN</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/asn-api"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Advanced ASN API</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/company"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Company</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/blocklists"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Blocklists</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/ip-reputation-scores"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">IP Reputation Scores</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/vpn-detection"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">VPN Detection</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">Command Line Interface</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/getting-started-1"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Advanced Usage</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/geofeed-validation"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Geofeed Validation</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/bulk-lookups-recommended"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Batch Lookups</span></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">Reference</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/secure-your-api-key-premium"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Secure your API Key (Premium)</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/jsonp"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">JSONP</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/bulk-lookup"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Bulk Lookup</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/filtering-response-fields"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Filtering Response Fields</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/all-response-fields"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">All Response Fields</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/api-status-codes"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">API Status Codes</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/frequently-asked-questions"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Frequently Asked Questions</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" rel="noopener" target="_blank" data-active="" href="https://headwayapp.co/ipdata-changelog"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Changelog</span></span><span class="Sidebar-link-metaLhOiyAaGZrkY"><i aria-label="Opens in new tab" class="Sidebar-link-iconnjiqEiZlPn0W Sidebar-link-externalIcon 
68icon-arrow-up-right" role="img"></i></span></a></li></ul></section><section class="Sidebar-listWrapper6Q9_yUrG906C Sidebar-listWrapper_expandedvCieTVZJcoub rm-Sidebar-section"><h2 class="Sidebar-headingTRQyOa2pk0gh rm-Sidebar-heading">Tutorials</h2><ul class="Sidebar-list_sidebarLayout3RaX72iQNOEI Sidebar-list3cZWQLaBf9k8 Sidebar-list_expandedWy9fQM8vmtOc rm-Sidebar-list"><li class="Sidebar-item23D-2Kd61_k3"><a aria-current="page" class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link active" target="_self" href="/docs/publishing-a-geofeed"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Publishing a Geofeed</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/blocking-users-by-country"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Blocking Users by Country</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/block-vpnproxy-and-tor-users"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Block VPN/Proxy and Tor users</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/personalize-by-country"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Personalize by Country</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/redirect-by-country"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Redirect by Country</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/get-the-location-from-an-ip-address"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Get the location from an IP address</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/how-to-get-a-clients-ip-address-using-javascript"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">How to get a client&#x27;s IP address using JavaScript</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/html5-geolocation-with-ipdata-fallback"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">HTML5 Geolocation with ipdata fallback</span></span></a></li><li class="Sidebar-item23D-2Kd61_k3"><a class="Sidebar-link2Dsha-r-GKh2 childless text-wrap rm-Sidebar-link" target="_self" href="/docs/get-the-location-from-an-ip-address-in-javascript"><span class="Sidebar-link-textLuTE1ySm4Kqn"><span class="Sidebar-link-text_label1gCT_uPnx7Gu">Get the location from an IP Address in Javascript</span></span></a></li></ul></section></div><button aria-label="Hide sidebar navigation" class="Nav-toggle-collapse39KxgTH727KL" type="button"></button></nav><article class="SuperHubDoc-article3ArTrEavUTKg rm-Article rm-Guides-SuperHub"><header id="content-head"><div class="row clearfix"><div class="col-xs-9"><h1>Publishing a Geofeed</h1></div></div></header><div class="grid-container-fluid" id="content-container"><section class="content-body grid-75 "><div style="display:contents"><div class="rm-Markdown markdown-body rm-Markdown markdown-body ng-non-bindable" data-testid="RDMD" style="margin-left:31px"><style>/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */
69@layer theme, base, components, utilities;
70@layer utilities;
71</style><p>If you&#x27;d like to correct the geolocation information associated with the networks you own or administer for your clients the preferred way to do this is via geofeeds.</p>
72<h1 class="heading heading-1 header-scroll"><div class="heading-anchor anchor waypoint" id="what-is-a-geofeed"></div><div class="heading-text">What is a Geofeed?</div><a aria-label="Skip link to What is a Geofeed?" class="heading-anchor-icon fa fa-regular fa-anchor" href="#what-is-a-geofeed"></a></h1>
73<p>Geofeeds are the gold standard for sharing geolocation information and have been discussed and described 
73in great detail in <a href="https://datatracker.ietf.org/doc/rfc8805/" target="" title="">RFC 8805</a>.</p>
74<p>A geofeed is simply a CSV file with the following format:</p>
75<div class="CodeTabs CodeTabs_initial theme-undefined"><div class="CodeTabs-toolbar"><button type="button" value="csv">csv</button></div><div class="CodeTabs-inner"><pre><code class="rdmd-code lang- theme-undefined" data-lang="">network, iso_country code, iso_region_code, city_name, postal_code</code></pre></div></div>
76<p>Here is an example of a valid and complete geofeed;</p>
77<div class="CodeTabs CodeTabs_initial theme-undefined"><div class="CodeTabs-toolbar"><button type="button" value="csv">csv</button></div><div class="CodeTabs-inner"><pre><code class="rdmd-code lang- theme-undefined" data-lang="">8.8.8.0/24,US,US-CA,Mountain View,
782001:4860:4860::/46,US,US-CA,Mountain View,</code></pre></div></div>
79<p>That&#x27;s it!</p>
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109<div class="rdmd-table"><div class="rdmd-table-inner"><table><thead><tr><th style="text-align:left">Column</th><th style="text-align:left">Description</th></tr></thead><tbody><tr><td style="text-align:left">network</td><td style="text-align:left">a valid IP address or network, either is fine, both IPv4 and IPv6 are supported</td></tr><tr><td style="text-align:left">iso_country_code</td><td style="text-align:left">a valid ISO 3166-1 alpha-2 code, you can find a list of all the ISO country codes at <a href="https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#UNI4" target="" title="">https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#UNI4</a></td></tr><tr><td style="text-align:left">iso_region_code</td><td style="text-align:left">a valid ISO 3166-2 code, you can find a list of all the ISO region codes for a specific country at <a href="https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#UNI4" target="" title="">https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#UNI4</a>. Simply look under the &quot;Subdivision Code links&quot; column for the country you&#x27;re interested in. Alternatively, if you know the country code, append it to the following url <a href="https://en.wikipedia.org/wiki/ISO_3166-2:%7B" target="" title="">https://en.wikipedia.org/wiki/ISO_3166-2:{</a> your iso country code} eg. <a href="https://en.wikipedia.org/wiki/ISO_3166-2:US" target="" title="">https://en.wikipedia.org/wiki/ISO_3166-2:US</a></td></tr><tr><td style="text-align:left">city_name</td><td style="text-align:left">the city you&#x27;d like to associate with the network</td></tr><tr><td style="text-align:left">postal_code (optional)</td><td style="text-align:left">the postal code you&#x27;d like to associate with the network</td></tr></tbody></table></div></div>
110<p>Note that all except the network and the country code are optional. Technically the RFC states that the country code is optional but we will not process any entries that do not have a country code at a minimum.</p>
111<h1 class="heading heading-1 header-scroll"><div class="heading-anchor anchor waypoint" id="publishing-your-geofeed"></div><div class="heading-text">Publishing your Geofeed</div><a aria-label="Skip link to Publishing your Geofeed" class="heading-anchor-icon fa fa-regular fa-anchor" href="#publishing-your-geofeed"></a></h1>
112<p>You have a few options:</p>
113<h3 class="heading heading-3 header-scroll"><div class="heading-anchor anchor waypoint" id="google-spreadsheets"></div><div class="heading-text">Google Spreadsheets</div><a aria-label="Skip link to Google Spreadsheets" class="heading-anchor-icon fa fa-regular fa-anchor" href="#google-spreadsheets"></a></h3>
114<p>This is the simplest way to get started! Simply upload your csv file to Google Sheets and send us the public URL. If you have a few networks you can just use the spreadsheet as a living geofeed and update it whenever you need to so long as you follow the format described in the previous section.</p>
115<h3 class="heading heading-3 header-scroll"><div class="heading-anchor anchor waypoint" id="github-repo"></div><div class="heading-text">Github Repo</div><a aria-label="Skip link to Github Repo" class="heading-anchor-icon fa fa-regular fa-anchor" href="#github-repo"></a></h3>
116<p>Another very simple solution is to create a public Github repo and push your geofeed to it. Then share the repo with us! You can update the file as needed with the added advantage that you will have a history of all the changes.</p>
117<h3 class="heading heading-3 header-scroll"><div class="heading-anchor anchor waypoint" id="your-website"></div><div class="heading-text">Your website</div><a aria-label="Skip link to Your website" class="heading-anchor-icon fa fa-regular fa-anchor" href="#your-website"></a></h3>
118<p>This is the most formal way to share your geofeed and is the existing convention.</p>
119<p>Upload your geofeed file to your company&#x27;s domain eg. example.com/geofeed.csv or geofeed.example.com.</p>
120<h2 class="heading heading-2 header-scroll"><div class="heading-anchor anchor waypoint" id="validating-your-feed"></div><div class="heading-text">Validating your feed</div><a aria-label="Skip link to Validating your feed" class="heading-anchor-icon fa fa-regular fa-anchor" href="#validating-your-feed"></a></h2>
121<p>We have added a <code class="rdmd-code lang- theme-undefined" data-lang="">validate</code> command to the ipdata CLI that you can use to ensure all the entries in your geofeed will be processed without issue.</p>
122<p>If you don&#x27;t already have the CLI, use pip to install it</p>
123<pre><code class="rdmd-code lang- theme-undefined" data-lang="">
123python3 -m pip install ipdata</code></pre>
124<p>Then run</p>
125<pre><code class="rdmd-code lang- theme-undefined" data-lang="">ipdata validate https://example.com/geofeed.csv</code></pre>
126<p>to validate an already published feed.</p>
127<p>Or to validate a local file run</p>
128<pre><code class="rdmd-code lang- theme-undefined" data-lang="">ipdata validate myfeed.csv</code></pre>
129<p>The command checks that for every entry:</p>
130<ul>
131<li>the country code is a valid ISO 3166-1 alpha-2 code</li>
132<li>the region code is a valid ISO 3166-2 code</li>
133<li>the region code and the country code match i.e. the region given is in the country given</li>
134<li>the country code is not empty</li>
135<li>the network is a valid network i.e. not a typo or a private/reserved network</li>
136</ul>
137<h2 class="heading heading-2 header-scroll"><div class="heading-anchor anchor waypoint" id="submitting-to-ipdata"></div><div class="heading-text">Submitting to ipdata</div><a aria-label="Skip link to Submitting to ipdata" class="heading-anchor-icon fa fa-regular fa-anchor" href="#submitting-to-ipdata"></a></h2>
138<p>Once you are happy with your feed and have uploaded it to a publicly accessible URL, please send an email with the link to <a href="/cdn-cgi/l/email-protection#e4979194948b9690a48d9480859085ca878b" target="" title=""><span class="__cf_email__" data-cfemail="b7c4c2c7c7d8c5c3f7dec7d3d6c3d699d4d8">[email&#160;protected]</span></a>.</p>
139<h2 class="heading heading-2 header-scroll"><div class="heading-anchor anchor waypoint" id="sharing-your-feed-with-a-wider-audience"></div><div class="heading-text">Sharing your feed with a wider audience</div><a aria-label="Skip link to Sharing your feed with a wider audience" class="heading-anchor-icon fa fa-regular fa-anchor" href="#sharing-your-feed-with-a-wider-audience"></a></h2>
140<p>If you&#x27;d like to share your geofeed with a wider audience you can do so by editing the inetnum information in whois and adding a <code class="rdmd-code lang- theme-undefined" data-lang="">geofeed:</code> field with a link to your feed. This will allow your feed to be automatically discovered by any organizations that use geofeed data. This is described in greater detail in <a href="https://www.rfc-editor.org/rfc/rfc9092.html" target="" title="">RFC 9092</a>. eg.</p>
141<pre><code class="rdmd-code lang- theme-undefined" data-lang="">inetnum: 192.0.2.0/24 # example
142geofeed: https://example.com/geofeed.csv</code></pre></div></div><div align="center" class="Flex Flex_row " justify="between" style="--flex-gap:var(--md)"><div class="UpdatedAt"><p class="DateLine "><i class="icon icon-watch"></i>Updated<!-- --> <!-- -->11 months ago<!-- --> </p></div></div><hr class="NextStepsDivider"/><nav aria-label="Pagination Controls" class="PaginationControlsjDYuqu8pBMUy rm-Pagination"><a class="PaginationControls-link254uPEbaP92i PaginationControls-link_left1G58BmNHDbVm" aria-label="Previous Page: Frequently Asked Questions" href="/docs/frequently-asked-questions"><span class="PaginationControls-iconZbaZ3tgyhNmI icon-arrow-left2"></span><div class="PaginationControls-text3qEXHZU00znD PaginationControls-text_left3wBkn4C9R0W_">Frequently Asked Questions</div></a><a class="PaginationControls-link254uPEbaP92i PaginationControls-link_right5lsfuICZqXYk" aria-label="Next Page: Blocking Users by Country" href="/docs/blocking-users-by-country"><div class="PaginationControls-text3qEXHZU00znD PaginationControls-text_right3EIfWubgRVVP">Blocking Users by Country</div><span class="PaginationControls-iconZbaZ3tgyhNmI icon-arrow-right2"></span></a></nav><div class="rm-PageThumbs PageThumbs"><div class="PageThumbs-helpful">Did this page help you?<div class="PageThumbs-cta"><div class="Dropdown Dropdown_closed" data-testid="dropdown-container"><button aria-label="Yes, this page helped me" aria-haspopup="dialog" class="Button Button_sm PageThumbs-button Dropdown-toggle Button_secondary Button_secondary_text" type="button"><i class="icon icon-thumbs-up-2"></i><span>Yes</span></button></div><div class="Dropdown Dropdown_closed" data-testid="dropdown-container">
142<button aria-label="No, this page did not help me" aria-haspopup="dialog" class="Button Button_sm PageThumbs-button Dropdown-toggle Button_secondary Button_secondary_text" type="button"><i class="icon icon-thumbs-down1"></i><span>No</span></button></div></div></div></div></section><section class="content-toc grid-25 rm-Aside rm-Aside_line "><div class="AIDropdownzmvdRdsNayZl rm-AIDropdown"><button class="Button Button_sm AIDropdown-splitButton2KQ9N2VEvBcT AIDropdown-splitButton_left2tTf2UmhJFyZ Button_secondary_ghost Button_secondary" type="button"><span class="IconWrapper Icon-wrapper2z2wVIeGsiUy"><svg fill="none" viewBox="0 0 24 24" class="Icon Icon3_D2ysxFZ_ll Icon-svg2Lm7f6G9Ly5a" data-name="copy" role="img" style="--icon-color:inherit;--icon-size:inherit;--icon-stroke-width:2px" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M20 9h-9a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2v-9a2 2 0 0 0-2-2Z" class="icon-stroke-width"></path><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1" class="icon-stroke-width"></path></svg></span><span>Copy Page</span></button><div class="Dropdown Dropdown_closed" data-testid="dropdown-container"><button aria-haspopup="dialog" class="Button Button_sm AIDropdown-splitButton2KQ9N2VEvBcT AIDropdown-splitButton_rightW_JEw7Q1_yEG Dropdown-toggle Button_secondary_ghost Button_secondary" type="button"><span class="IconWrapper Icon-wrapper2z2wVIeGsiUy"><svg fill="none" viewBox="0 0 24 24" class="Icon Icon3_D2ysxFZ_ll Icon-svg2Lm7f6G9Ly5a" data-name="chevron-down" role="img" style="--icon-color:inherit;--icon-size:inherit;--icon-stroke-width:2px" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" d="m6 9 6 6 6-6" class="icon-stroke-width"></path></svg></span></button></div></div><div><nav aria-label="Table of contents" class="rm-ToC"><ul class="toc-list"><li class="toc-children"><ul><li><a href="#what-is-a-geofeed">What is a Geofeed?</a></li><li><a href="#publishing-your-geofeed">Publishing your Geofeed</a></li><li><ul><li><ul><li><a href="#google-spreadsheets">Google Spreadsheets</a></li><li><a href="#github-repo">Github Repo</a></li><li><a href="#your-website">Your website</a></li></ul></li><li><a href="#validating-your-feed">Validating your feed</a></li><li><a href="#submitting-to-ipdata">Submitting to ipdata</a></li><li><a href="#sharing-your-feed-with-a-wider-audience">Sharing your feed with a wider audience</a></li></ul></li></ul></li></ul></nav></div></section></div></article></div></main><footer aria-label="Status banner" class="Footer2U8XAPoGhlgO AppFooter rm-Banners"></footer><div class="ModalWrapper" id="ChatGPT-modal"></div></div></div></div><div class="ModalWrapper" id="tutorialmodal-root"></div></div></div><div class="ng-non-bindable">
vendor: 108 bytes, line 142
142<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
142<script id="ssr-props" type="application/x-ssr-props">{"sidebars":{},"apiBaseUrl":"/","baseUrl":"/","search":{"appId":"","searchApiKey":"","indexName":"readme_search_v2","projectsMeta":[{"modules":{"landing":false,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":false,"logs":false,"custompages":false,"tutorials":false},"id":"624df78f3f2c7b009696e59b","name":"ipdata","subdomain":"ipdata","subpath":"","nav_names":{"docs":"Documentation","reference":"","changelog":"","discuss":"","tutorials":"","recipes":""}}],"urlManagerOpts":{"lang":"en","parent":{"childrenProjects":[]},"project":{"subdomain":"ipdata"},"version":"1"}},"customBlocks":[],"document":{"allow_crawlers":"disabled","processing_status":null,"renderable":{"status":true},"slug":"publishing-a-geofeed","state":"current","title":"Publishing a Geofeed","type":"basic","updated_at":"2025-11-11T22:57:51.000Z","uri":"/branches/1/guides/publishing-a-geofeed","appearance":{"icon":{"name":null,"type":null},"table_of_contents":"default"},"category":{"uri":"/branches/1/categories/guides/Tutorials"},"href":{"dash":"https://dash.readme.com/project/ipdata/v1/docs/publishing-a-geofeed","hub":"https://docs.ipdata.co/docs/publishing-a-geofeed","github_url":null},"links":{"project":"/projects/me"},"parent":{"uri":null},"privacy":{"view":"public"},"project":{"name":"ipdata","subdomain":"ipdata","uri":"/projects/me"},"content":{"body":"If you'd like to correct the geolocation information associated with the networks you own or administer for your clients the preferred way to do this is via geofeeds.\n\n# What is a Geofeed?\n\nGeofeeds are the gold standard for sharing geolocation information and have been discussed and described in great detail in [RFC 8805](https://datatracker.ietf.org/doc/rfc8805/).\n\nA geofeed is simply a CSV file with the following format:\n\n```csv\nnetwork, iso_country code, iso_region_code, city_name, postal_code\n```\n\nHere is an example of a valid and complete geofeed;
142\n\n```csv\n8.8.8.0/24,US,US-CA,Mountain View,\n2001:4860:4860::/46,US,US-CA,Mountain View,\n```\n\nThat's it!\n\n| Column                  | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |\n| :---------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| network                 | a valid IP address or network, either is fine, both IPv4 and IPv6 are supported                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |\n| iso\\_country\\_code      | a valid ISO 3166-1 alpha-2 code, you can find a list of all the ISO country codes at [https://en.wikipedia.org/wiki/List\\_of\\_ISO\\_3166\\_country\\_codes#UNI4](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#UNI4)                                                                                                                                                                                                                                                                                                                                                                                                           |\n| iso\\_region\\_code       | a valid ISO 3166-2 code, you can find a list of all the ISO region codes for a specific country at [https://en.wikipedia.org/wiki/List\\_of\\_ISO\\_3166\\_country\\_codes#UNI4](https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#UNI4). Simply look under the \"Subdivision Code links\" column for the country you're interested in. Alternatively, if you know the country code, append it to the following url [https://en.wikipedia.org/wiki/ISO\\_3166-2:\\{](https://en.wikipedia.org/wiki/ISO_3166-2:\\{) your iso country code} eg. [https://en.wikipedia.org/wiki/ISO\\_3166-2:US](https://en.wikipedia.org/wiki/ISO_3166-2:US) |\n| city\\_name              | the city you'd like to associate with the network                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |\n| postal\\_code (optional) | the postal code you'd like to associate with the network                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |\n\nNote that all except the network and the country code are optional. Technically the RFC states that the country code is optional but we will not process any entries that do not have a country code at a minimum.\n\n# Publishing your Geofeed\n\nYou have a few options:\n\n### Google Spreadsheets\n\nThis is the simplest way to get started! Simply upload your csv file to Google Sheets and send us the public URL. If you have a few networks you can just use the spreadsheet as a living geofeed and update it whenever you need to so long as you follow the format described 
142in the previous section.\n\n### Github Repo\n\nAnother very simple solution is to create a public Github repo and push your geofeed to it. Then share the repo with us! You can update the file as needed with the added advantage that you will have a history of all the changes.\n\n### Your website\n\nThis is the most formal way to share your geofeed and is the existing convention.\n\nUpload your geofeed file to your company's domain eg. example.com/geofeed.csv or geofeed.example.com.\n\n## Validating your feed\n\nWe have added a `validate` command to the ipdata CLI that you can use to ensure all the entries in your geofeed will be processed without issue.\n\nIf you don't already have the CLI, use pip to install it\n\n```\npython3 -m pip install ipdata\n```\n\nThen run\n\n```\nipdata validate https://example.com/geofeed.csv\n```\n\nto validate an already published feed.\n\nOr to validate a local file run\n\n```\nipdata validate myfeed.csv\n```\n\nThe command checks that for every entry:\n\n* the country code is a valid ISO 3166-1 alpha-2 code\n* the region code is a valid ISO 3166-2 code\n* the region code and the country code match i.e. the region given is in the country given\n* the country code is not empty\n* the network is a valid network i.e. not a typo or a private/reserved network\n\n## Submitting to ipdata\n\nOnce you are happy with your feed and have uploaded it to a publicly accessible URL, please send an email with the link to [[email protected]](mailto:[email protected]).\n\n## Sharing your feed with a wider audience\n\nIf you'd like to share your geofeed with a wider audience you can do so by editing the inetnum information in whois and adding a `geofeed:` field with a link to your feed. This will allow your feed to be automatically discovered by any organizations that use geofeed data. This is described in greater detail in [RFC 9092](https://www.rfc-editor.org/rfc/rfc9092.html). eg. \n\n```\ninetnum: 192.0.2.0/24 # example\ngeofeed: https://example.com/geofeed.csv\n```","excerpt":null,"link":{"url":null,"new_tab":false},"next":{"description":null,"pages":[]}},"metadata":{"description":null,"keywords":null,"title":null,"x_import":null,"image":{"uri":null,"url":null}}},"meta":{"baseUrl":"/","description":"If you'd like to correct the geolocation information associated with the networks you own or administer for your clients the preferred way to do this is via geofeeds. What is a Geofeed? Geofeeds are the gold standard for sharing geolocation information and have been discussed and described in great…","hidden":false,"image":[],"metaTitle":"Publishing a Geofeed","robots":"noindex","slug":"publishing-a-geofeed","title":"Publishing a Geofeed","type":"docs","updatedAt":"2025-11-11T22:57:51.000Z"},"rdmd":{"dehydrated":{"toc":"\u003cnav aria-label=\"Table of contents\" class=\"rm-ToC\">\u003cul class=\"toc-list\">\u003cli class=\"toc-children\">\u003cul>\u003cli>\u003ca href=\"#what-is-a-geofeed\">What is a Geofeed?\u003c/a>\u003c/li>\u003cli>\u003ca href=\"#publishing-your-geofeed\">Publishing your Geofeed\u003c/a>\u003c/li>\u003cli>\u003cul>\u003cli>\u003cul>\u003cli>\u003ca href=\"#google-spreadsheets\">Google Spreadsheets\u003c/a>\u003c/li>\u003cli>\u003ca href=\"#github-repo\">Github Repo\u003c/a>\u003c/li>\u003cli>\u003ca href=\"#your-website\">Your website\u003c/a>\u003c/li>\u003c/ul>\u003c/li>\u003cli>\u003ca href=\"#validating-your-feed\">Validating your feed\u003c/a>\u003c/li>\u003cli>\u003ca href=\"#submitting-to-ipdata\">Submitting to ipdata\u003c/a>\u003c/li>\u003cli>\u003ca href=\"#sharing-your-feed-with-a-wider-audience\">Sharing your feed with a wider audience\u003c/a>\u003c/li>\u003c/ul>\u003c/li>\u003c/ul>\u003c/li>\u003c/ul>\u003c/nav>","body":"\u003cstyle>/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n@layer theme, base, components, utilities;\n@layer utilities;\n\u003c/style>\u003cp>If you&#x27;d like to correct the geolocation information associated with the networks you own or administer for your clients the preferred way to do this is via geofeeds.\u003c/p>\n\u003ch1 class=\"heading heading-1 header-scroll\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"what-is-a-geofeed\">\u003c/div>\u003cdiv class=\"heading-text\">What is a Geofeed?\u003c/div>
142\u003ca aria-label=\"Skip link to What is a Geofeed?\" class=\"heading-anchor-icon fa fa-regular fa-anchor\" href=\"#what-is-a-geofeed\">\u003c/a>\u003c/h1>\n\u003cp>Geofeeds are the gold standard for sharing geolocation information and have been discussed and described in great detail in \u003ca href=\"https://datatracker.ietf.org/doc/rfc8805/\" target=\"\" title=\"\">RFC 8805\u003c/a>.\u003c/p>\n\u003cp>A geofeed is simply a CSV file with the following format:\u003c/p>\n\u003cdiv class=\"CodeTabs CodeTabs_initial theme-undefined\">\u003cdiv class=\"CodeTabs-toolbar\">\u003cbutton type=\"button\" value=\"csv\">csv\u003c/button>\u003c/div>\u003cdiv class=\"CodeTabs-inner\">\u003cpre>\u003ccode class=\"rdmd-code lang- theme-undefined\" data-lang=\"\">network, iso_country code, iso_region_code, city_name, postal_code\u003c/code>\u003c/pre>\u003c/div>\u003c/div>\n\u003cp>Here is an example of a valid and complete geofeed;\u003c/p>\n\u003cdiv class=\"CodeTabs CodeTabs_initial theme-undefined\">\u003cdiv class=\"CodeTabs-toolbar\">\u003cbutton type=\"button\" value=\"csv\">csv\u003c/button>\u003c/div>\u003cdiv class=\"CodeTabs-inner\">\u003cpre>\u003ccode class=\"rdmd-code lang- theme-undefined\" data-lang=\"\">
1428.8.8.0/24,US,US-CA,Mountain View,\n2001:4860:4860::/46,US,US-CA,Mountain View,\u003c/code>\u003c/pre>\u003c/div>\u003c/div>\n\u003cp>That&#x27;s it!\u003c/p>\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\u003cdiv class=\"rdmd-table\">\u003cdiv class=\"rdmd-table-inner\">\u003ctable>\u003cthead>\u003ctr>\u003cth style=\"text-align:left\">Column\u003c/th>\u003cth style=\"text-align:left\">Description\u003c/th>\u003c/tr>\u003c/thead>\u003ctbody>\u003ctr>\u003ctd style=\"text-align:left\">network\u003c/td>\u003ctd style=\"text-align:left\">a valid IP address or network, either is fine, both IPv4 and IPv6 are supported\u003c/td>\u003c/tr>\u003ctr>\u003ctd style=\"text-align:left\">iso_country_code\u003c/td>\u003ctd style=\"text-align:left\">a valid ISO 3166-1 alpha-2 code, you can find a list of all the ISO country codes at \u003ca href=\"https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#UNI4\" target=\"\" title=\"\">https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#UNI4\u003c/a>\u003c/td>\u003c/tr>\u003ctr>\u003ctd style=\"text-align:left\">iso_region_code\u003c/td>\u003ctd style=\"text-align:left\">a valid ISO 3166-2 code, you can find a list of all the ISO region codes for a specific country at \u003ca href=\"https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#UNI4\" target=\"\" title=\"\">https://en.wikipedia.org/wiki/List_of_ISO_3166_country_codes#UNI4\u003c/a>. Simply look under the &quot;Subdivision Code links&quot; column for the country you&#x27;re interested in. Alternatively, if you know the country code, append it to the following url \u003ca href=\"https://en.wikipedia.org/wiki/ISO_3166-2:%7B\" target=\"\" title=\"\">https://en.wikipedia.org/wiki/ISO_3166-2:{\u003c/a> your iso country code} eg. \u003ca href=\"https://en.wikipedia.org/wiki/ISO_3166-2:US\" target=\"\" title=\"\">https://en.wikipedia.org/wiki/ISO_3166-2:US\u003c/a>\u003c/td>\u003c/tr>\u003ctr>\u003ctd style=\"text-align:left\">city_name\u003c/td>\u003ctd style=\"text-align:left\">the city you&#x27;d like to associate with the network\u003c/td>\u003c/tr>\u003ctr>\u003ctd style=\"text-align:left\">postal_code (optional)\u003c/td>\u003ctd style=\"text-align:left\">the postal code you&#x27;d like to associate with the network\u003c/td>\u003c/tr>\u003c/tbody>\u003c/table>\u003c/div>\u003c/div>\n\u003cp>Note that all except the network and the country code are optional. Technically the RFC states that the country code is optional but we will not process any entries that do not have a country code at a minimum.\u003c/p>\n\u003ch1 class=\"heading heading-1 header-scroll\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"publishing-your-geofeed\">\u003c/div>\u003cdiv class=\"heading-text\">Publishing your Geofeed\u003c/div>\u003ca aria-label=\"Skip link to Publishing your Geofeed\" class=\"heading-anchor-icon fa fa-regular fa-anchor\" href=\"#publishing-your-geofeed\">\u003c/a>\u003c/h1>\n\u003cp>You have a few options:\u003c/p>\n\u003ch3 class=\"heading heading-3 header-scroll\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"google-spreadsheets\">\u003c/div>\u003cdiv class=\"heading-text\">Google Spreadsheets\u003c/div>\u003ca aria-label=\"Skip link to Google Spreadsheets\" class=\"heading-anchor-icon fa fa-regular fa-anchor\" href=\"#google-spreadsheets\">\u003c/a>\u003c/h3>\n\u003cp>This is the simplest way to get started! Simply upload your csv file to Google Sheets and send us the public URL. If you have a few networks you can just use the spreadsheet as a living geofeed and update it whenever you need to so long as you follow the format described in the previous section.\u003c/p>\n\u003ch3 class=\"heading heading-3 header-scroll\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"github-repo\">\u003c/div>\u003cdiv class=\"heading-text\">Github Repo\u003c/div>\u003ca aria-label=\"Skip link to Github Repo\" class=\"heading-anchor-icon fa fa-regular fa-anchor\" href=\"#github-repo\">\u003c/a>\u003c/h3>\n\u003cp>Another very simple solution is to create a public Github repo and push your geofeed to it. Then share the repo with us! You can update the file as needed with the added advantage that you will have a history of all the changes.\u003c/p>\n\u003ch3 class=\"heading heading-3 header-scroll\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"your-website\">\u003c/div>\u003cdiv class=\"heading-text\">Your website\u003c/div>
142\u003ca aria-label=\"Skip link to Your website\" class=\"heading-anchor-icon fa fa-regular fa-anchor\" href=\"#your-website\">\u003c/a>\u003c/h3>\n\u003cp>This is the most formal way to share your geofeed and is the existing convention.\u003c/p>\n\u003cp>Upload your geofeed file to your company&#x27;s domain eg. example.com/geofeed.csv or geofeed.example.com.\u003c/p>\n\u003ch2 class=\"heading heading-2 header-scroll\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"validating-your-feed\">\u003c/div>\u003cdiv class=\"heading-text\">Validating your feed\u003c/div>\u003ca aria-label=\"Skip link to Validating your feed\" class=\"heading-anchor-icon fa fa-regular fa-anchor\" href=\"#validating-your-feed\">\u003c/a>\u003c/h2>\n\u003cp>We have added a \u003ccode class=\"rdmd-code lang- theme-undefined\" data-lang=\"\">validate\u003c/code> command to the ipdata CLI that you can use to ensure all the entries in your geofeed will be processed without issue.\u003c/p>\n\u003cp>If you don&#x27;t already have the CLI, use pip to install it\u003c/p>\n\u003cpre>\u003ccode class=\"rdmd-code lang- theme-undefined\" data-lang=\"\">python3 -m pip install ipdata\u003c/code>\u003c/pre>\n\u003cp>Then run\u003c/p>\n\u003cpre>\u003ccode class=\"rdmd-code lang- theme-undefined\" data-lang=\"\">ipdata validate https://example.com/geofeed.csv\u003c/code>\u003c/pre>\n\u003cp>to validate an already published feed.\u003c/p>\n\u003cp>Or to validate a local file run\u003c/p>\n\u003cpre>\u003ccode class=\"rdmd-code lang- theme-undefined\" data-lang=\"\">ipdata validate myfeed.csv\u003c/code>\u003c/pre>\n\u003cp>The command checks that for every entry:\u003c/p>\n\u003cul>\n\u003cli>the country code is a valid ISO 3166-1 alpha-2 code\u003c/li>\n\u003cli>the region code is a valid ISO 3166-2 code\u003c/li>\n\u003cli>the region code and the country code match i.e. the region given is in the country given\u003c/li>\n\u003cli>the country code is not empty\u003c/li>\n\u003cli>the network is a valid network i.e. not a typo or a private/reserved network\u003c/li>\n\u003c/ul>\n\u003ch2 class=\"heading heading-2 header-scroll\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"submitting-to-ipdata\">\u003c/div>\u003cdiv class=\"heading-text\">Submitting to ipdata\u003c/div>\u003ca aria-label=\"Skip link to Submitting to ipdata\" class=\"heading-anchor-icon fa fa-regular fa-anchor\" href=\"#submitting-to-ipdata\">\u003c/a>\u003c/h2>\n\u003cp>Once you are happy with your feed and have uploaded it to a publicly accessible URL, please send an email with the link to \u003ca href=\"mailto:[email protected]\" target=\"\" title=\"\">[email protected]\u003c/a>.\u003c/p>\n\u003ch2 class=\"heading heading-2 header-scroll\">\u003cdiv class=\"heading-anchor anchor waypoint\" id=\"sharing-your-feed-with-a-wider-audience\">\u003c/div>\u003cdiv class=\"heading-text\">Sharing your feed with a wider audience\u003c/div>\u003ca aria-label=\"Skip link to Sharing your feed with a wider audience\" class=\"heading-anchor-icon fa fa-regular fa-anchor\" href=\"#sharing-your-feed-with-a-wider-audience\">\u003c/a>\u003c/h2>\n\u003cp>If you&#x27;d like to share your geofeed with a wider audience you can do so by editing the inetnum information in whois and adding a \u003ccode class=\"rdmd-code lang- theme-undefined\" data-lang=\"\">geofeed:\u003c/code> field with a link to your feed. This will allow your feed to be automatically discovered by any organizations that use geofeed data. This is described in greater detail in \u003ca href=\"https://www.rfc-editor.org/rfc/rfc9092.html\" target=\"\" title=\"\">RFC 9092\u003c/a>. eg.\u003c/p>\n\u003cpre>\u003ccode class=\"rdmd-code lang- theme-undefined\" data-lang=\"\">inetnum: 192.0.2.0/24 # example\ngeofeed: https://example.com/geofeed.csv\u003c/code>\u003c/pre>","css":"/*! tailwindcss v4.1.17 | MIT License | https://tailwindcss.com */\n@layer theme, base, components, utilities;\n@layer utilities;\n"},"opts":{"hardBreaks":true,"alwaysThrow":false,"compatibilityMode":false,"copyButtons":true,"correctnewlines":false,"markdownOptions":{"fences":true,"commonmark":true,"gfm":true,"ruleSpaces":false,"listItemIndent":"1","spacedTable":true,"paddedTable":true},"normalize":true,"lazyImages":true,"reusableContent":{"tags":{},"disabled":false,"serialize":true,"wrap":true},"safeMode":false,"settings":{"position":true},"theme":"light","customBlocks":{},"componentTypes":{},"resourceID":"/branches/1/guides/publishing-a-geofeed","resourceType":"page","components":{}
142,"baseUrl":"/","terms":[{"_id":"624df78f3f2c7b009696e59c","term":"parliament","definition":"Owls are generally solitary, but when seen together the group is called a 'parliament'!"},{"_id":"6281533e5b77aa00653b3029","term":"ASN","definition":"An ASN is a 32-bit number than identifies an Autonomous System. An  autonomous system (AS) is a large network or group of networks that has a unified routing policy."},{"_id":"628158066be9a1006dbbf451","term":"RESTful","definition":"A web API that obeys the REST constraints is informally described as RESTful. RESTful web APIs are typically loosely based on HTTP methods to access resources via URL-encoded parameters and the use of JSON or XML to transmit data. - Wikipedia"},{"_id":"62816bbf94393b0013a9b95a","term":"bogon","definition":"Bogons are IP addresses that should not be routed because they are not allocated, or they are allocated for private use.\nIP space that has been allocated to an RIR, but not assigned by that RIR to an actual ISP or other end-user\nPrivate and reserved addresses defined by RFC 1918, RFC 5735, and RFC 6598 and netblocks that have not been allocated to a regional internet registry.\nUnallocated (Free) Address Space, generated on a daily basis using the IANA registry files, the Regional Internet Registry stats files and the Regional Internet Registry whois data."},{"_id":"628242fa12ed7600135ce201","term":"JSONL","definition":"A text format where each line is a valid JSON object and delimited by a newline. Also called new-line delimited JSON (NDJSON)."}],"variables":{"user":{},"defaults":[{"source":"","_id":"62813e1e7413170029a638a5","name":"url","default":"api","type":""}]}}},"sidebar":[{"pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"getting-started","title":"Quick Start","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Get%20Started","uri":"/branches/1/guides/getting-started","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"install-the-ipdata-cli","title":"Install the ipdata CLI","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Get%20Started","uri":"/branches/1/guides/install-the-ipdata-cli","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"client-side-vs-server-side","title":"Client-side vs Server-side","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Get%20Started","uri":"/branches/1/guides/client-side-vs-server-side","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"official-client-libraries","title":"Official Client Libraries","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Get%20Started","uri":"/branches/1/guides/official-client-libraries","parent":null}],"title":"Get Started","uri":"/branches/1/categories/guides/Get%20Started"},{"pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"geolocation","title":"Geolocation","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Available%20data","uri":"/branches/1/guides/geolocation","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"mobile-carrier-detection","title":"Mobile Carrier","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Available%20data","uri":"/branches/1/guides/mobile-carrier-detection","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"timezone-detection","title":"Timezone","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Available%20data","uri":"/branches/1/guides/timezone-detection","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"currency-detection","title":"Currency","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Available%2
1420data","uri":"/branches/1/guides/currency-detection","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"proxy-tor-and-threat-detection","title":"Threat Intelligence","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Available%20data","uri":"/branches/1/guides/proxy-tor-and-threat-detection","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"asn-data","title":"Basic ASN","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Available%20data","uri":"/branches/1/guides/asn-data","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"asn-api","title":"Advanced ASN API","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Available%20data","uri":"/branches/1/guides/asn-api","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"company","title":"Company","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Available%20data","uri":"/branches/1/guides/company","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"blocklists","title":"Blocklists","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Available%20data","uri":"/branches/1/guides/blocklists","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"ip-reputation-scores","title":"IP Reputation Scores","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Available%20data","uri":"/branches/1/guides/ip-reputation-scores","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"vpn-detection","title":"VPN Detection","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Available%20data","uri":"/branches/1/guides/vpn-detection","parent":null}],"title":"Available data","uri":"/branches/1/categories/guides/Available%20data"},{"pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"getting-started-1","title":"Advanced Usage","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Command%20Line%20Interface","uri":"/branches/1/guides/getting-started-1","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"geofeed-validation","title":"Geofeed Validation","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Command%20Line%20Interface","uri":"/branches/1/guides/geofeed-validation","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"bulk-lookups-recommended","title":"Batch Lookups","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Command%20Line%20Interface","uri":"/branches/1/guides/bulk-lookups-recommended","parent":null}],"title":"Command Line Interface","uri":"/branches/1/categories/guides/Command%20Line%20Interface"},{"pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"secure-your-api-key-premium","title":"Secure your API Key (Premium)","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Reference","uri":"/branches/1/guides/secure-your-api-key-premium","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"jsonp","title":"JSONP","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Reference","uri":"/branches/1/guides/jsonp","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"bulk-lookup","title":"Bulk Lookup","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Reference","uri":"/branches/1/guides/bulk-lookup","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"filtering-response-fields","title":"Filtering Response Fields","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Reference","uri":"/branches/1/guides/filtering-response-fields","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"all-response-fields","title":"All Response Fields","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Reference","uri":"/branches/1/guides/all-response-fields","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"api-status-codes","title":"API Status Codes","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Reference","uri":"/branches/1/guides/api-status-codes","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"frequently-asked-questions","title":"Frequently Asked Questions","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Reference","uri":"/branches/1/guides/frequently-asked-questions","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":true,"link_url":"https://headwayapp.co/ipdata-changelog","link_external":true,"renderable":{"status":true},"slug":"changelog","title":"Changelog","type":"link","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Reference","uri":"/branches/1/guides/changelog","parent":null}],"title":"Reference","uri":"/branches/1/categories/guides/Reference"},{"pages":[{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"publishing-a-geofeed","title":"Publishing a Geofeed","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Tutorials","uri":"/branches/1/guides/publishing-a-geofeed","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"blocking-users-by-country","title":"Blocking Users by Country","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Tutorials","uri":"/branches/1/guides/blocking-users-by-country","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"block-vpnproxy-and-tor-users","title":"Block VPN/Proxy and Tor users","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Tutorials","uri":"/branches/1/guides/block-vpnproxy-and-tor-users","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"personalize-by-country","title":"Personalize by Country","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Tutorials","uri":"/branches/1/guides/personalize-by-country","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"redirect-by-country","title":"Redirect by Country","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Tutorials","uri":"/branches/1/guides/redirect-by-country","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"get-the-location-from-an-ip-address","title":"Get the location from an IP address","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Tutorials","uri":"/branches/1/guides/get-the-location-from-an-ip-address","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"how-to-get-a-clients-ip-address-using-javascript","title":"How to get a client's IP address using JavaScript","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Tutorials","uri":"/branches/1/guides/how-to-get-a-clients-ip-address-using-javascript","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"html5-geolocation-with-ipdata-fallback","title":"HTML5 Geolocation with ipdata fallback","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Tutorials","uri":"/branches/1/guides/html5-geolocation-with-ipdata-fallback","parent":null},{"deprecated":false,"hidden":false,"isBodyEmpty":false,"renderable":{"status":true},"slug":"get-the-location-from-an-ip-address-in-javascript","title":"Get the location from an IP Address in Javascript","type":"basic","updatedAt":"2026-07-02T20:07:36.000Z","pages":[],"category":"/branches/1/categories/guides/Tutorials","uri":"/branches/1/guides/get-the-location-from-an-ip-address-in-javascript","parent":null}],"title":"Tutorials","uri":"/branches/1/categories/guides/Tutorials"}],"aiConfig":{"enabled":false,"settings":{"errors":null,"styleguide":null,"warnings":null}},"config":{"algoliaIndex":"readme_search_v2","amplitude":{"apiKey":"8b550cf334a130e3d6ea41a88b894d8","enabled":"true","sessionReplay":{"enabled":"true","sampleRate":"0.1"}},"api":{"upload":{"fileSizeLimit":10485760,"fileSizeLimitFormatted":"10MB"}},"asset_url":"https://cdn.readme.io","dashDomain":"dash.readme.com","domain":"readme.io","domainFull":"https://dash.readme.com","encryptedLocalStorageKey":"ekfls-2025-03-27","fullstory":{"enabled":true,"orgId":"FSV9A"},"git":{"preview":"https://githug-prod.gitto.rdme.io","sync":{"bitbucket":{"installationLink":"https://developer.atlassian.com/console/install/310151e6-ca1a-4a44-9af6-1b523fea0561?signature=AYABeMn9vqFkrg%2F1DrJAQxSyVf4AAAADAAdhd3Mta21zAEthcm46YXdzOmttczp1cy13ZXN0LTI6NzA5NTg3ODM1MjQzOmtleS83MDVlZDY3MC1mNTdjLTQxYjUtOWY5Yi1lM2YyZGNjMTQ2ZTcAuAECAQB4IOp8r3eKNYw8z2v%2FEq3%2FfvrZguoGsXpNSaDveR%2FF%2Fo0BHUxIjSWx71zNK2RycuMYSgAAAH4wfAYJKoZIhvcNAQcGoG8wbQIBADBoBgkqhkiG9w0BBwEwHgYJYIZIAWUDBAEuMBEEDOJgARbqndU9YM%2FRdQIBEIA7unpCah%2BIu53NA72LkkCDhNHOv%2BgRD7agXAO3jXqw0%2FAcBOB0%2F5LmpzB5f6B1HpkmsAN2i2SbsFL30nkAB2F3cy1rbXMAS2Fybjphd3M6a21zOmV1LXdlc3QtMTo3MDk1ODc4MzUyNDM6a2V5LzQ2MzBjZTZiLTAwYzMtNGRlMi04NzdiLTYyN2UyMDYwZTVjYwC4AQICAHijmwVTMt6Oj3F%2B0%2B0cVrojrS8yZ9ktpdfDxqPMSIkvHAGT%2FMTvCxC3XwnwlulZe975AAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMMUUe9d1YmFOo373TAgEQgDuJo7TayM6NL19Sj9RPooRrl8rYxwKgvu9gkLNc3GuyyovWI1xA2qTr0LQzMRsf3imrAWsywzPcsjnvuAAHYXdzLWttcwBLYXJuOmF3czprbXM6dXMtZWFzdC0xOjcwOTU4NzgzNTI0MzprZXkvNmMxMjBiYTAtNGNkNS00OTg1LWI4MmUtNDBhMDQ5NTJjYzU3ALgBAgIAeLKa7Dfn9BgbXaQmJGrkKztjV4vrreTkqr7wGwhqIYs5AZR28Sibv2eBxSIg2MydtvEAAAB%2BMHwGCSqGSIb3DQEHBqBvMG0CAQAwaAYJKoZIhvcNAQcBMB4GCWCGSAFlAwQBLjARBAzzWhThsIgJwrr%2FY2ECARCAOxoaW9pob21lweyAfrIm6Fw7gd8D%2B%2F8LHk4rl3jjULDM35%2FVPuqBrqKunYZSVCCGNGB3RqpQJr%2FasASiAgAAAAAMAAAQAAAAAAAAAAAAAAAAAEokowLKsF1tMABEq%2BKNyJP%2F%2F%2F%2F%2FAAAAAQAAAAAAAAAAAAAAAQAAADJLzRcp6MkqKR43PUjOiRxxbxXYhLc6vFXEutK3%2BQ71yuPq4dC8pAHruOVQpvVcUSe8dptV8c7wR8BTJjv%2F%2FNe8r0g%3D&product=bitbucket"}}},"hubspot":{"portalId":"9401557"},"metrics":{"billingCronEnabled":"true","dashUrl":"https://m.readme.io","defaultUrl":"https://m.readme.io","exportMaxRetries":12,"wsUrl":"wss://m.readme.io"},"micro":{"baseUrl":"https://micro-beta.readme.com"},"novuNotification":{"appId":"ob_MiAPOPqgP","showUnreleasedWorkflows":false},"proxyUrl":"https://try.readme.io","readmeRecaptchaSiteKey":"6LesVBYpAAAAAESOCHOyo2kF9SZXPVb54Nwf3i2x","releaseVersion":"5.898.0","reservedWords":{"tools":["execute-request","get-endpoint","get-server-variables","list-endpoints","list-specs","search-en
142dpoints","search","fetch"]},"sentry":{"dsn":"https://[email protected]/2052166","enabled":true},"shMigration":{"promoVideo":"","forceWaitlist":false,"migrationPreview":false},"sslBaseDomain":"readmessl.com","sslGenerationService":"ssl.readmessl.com","superHub":{"newProjectsEnabled":true},"tiptapCloud":{"appId":"8mzorjl9","url":"wss://8mzorjl9.collab.tiptap.cloud"},"wootric":{"accountToken":"NPS-122b75a4","enabled":true}},"context":{"labs":{},"user":{"isAuthenticated":false,"notifications":{}},"terms":[{"_id":"624df78f3f2c7b009696e59c","term":"parliament","definition":"Owls are generally solitary, but when seen together the group is called a 'parliament'!"},{"_id":"6281533e5b77aa00653b3029","term":"ASN","definition":"An ASN is a 32-bit number than identifies an Autonomous System. An  autonomous system (AS) is a large network or group of networks that has a unified routing policy."},{"_id":"628158066be9a1006dbbf451","term":"RESTful","definition":"A web API that obeys the REST constraints is informally described as RESTful. RESTful web APIs are typically loosely based on HTTP methods to access resources via URL-encoded parameters and the use of JSON or XML to transmit data. - Wikipedia"},{"_id":"62816bbf94393b0013a9b95a","term":"bogon","definition":"Bogons are IP addresses that should not be routed because they are not allocated, or they are allocated for private use.\nIP space that has been allocated to an RIR, but not assigned by that RIR to an actual ISP or other end-user\nPrivate and reserved addresses defined by RFC 1918, RFC 5735, and RFC 6598 and netblocks that have not been allocated to a regional internet registry.\nUnallocated (Free) Address Space, generated on a daily basis using the IANA registry files, the Regional Internet Registry stats files and the Regional Internet Registry whois data."},{"_id":"628242fa12ed7600135ce201","term":"JSONL","definition":"A text format where each line is a valid JSON object and delimited by a newline. Also called new-line delimited JSON (NDJSON)."}],"variables":{"user":{},"defaults":[{"source":"","_id":"62813e1e7413170029a638a5","name":"url","default":"api","type":""}]},"navigation":[],"project":{"flags":{"agentMetrics":false,"agentSkills":false,"aiDocsAudit":false,"aiPageLinting":false,"aiTranslation":false,"aiWriter":false,"allowApiExplorerJsonEditor":false,"allowBlockedDomainLaunch":false,"allowLaunchWithoutCard":false,"allowReusableOTPs":false,"allowUnsafeCustomHtmlSuggestionsFromNonAdmins":false,"allowXFrame":false,"alwaysShowDocPublishStatus":false,"apiAccessRevoked":false,"askAiOverride":"","bidiSync":true,"bidiSyncBitbucketSelfServe":false,"bidiSyncSkipIndexedHistory":true,"bidiSyncUseGitCli":false,"bidiSyncUseOdbAlternates":true,"bitbucketCloudSync":false,"changelogRssAlwaysPublic":false,"changelogsInGitto":true,"childManagedBidi":false,"collaborativeReview":false,"correctnewlines":false,"customDomainAdminBypass":false,"directGoogleToStableVersion":false,"disableAiChat":false,"disableAiInlineEditor":false,"disableAnonForum":false,"disableAskAiApi":false,"disableAutoTranslate":false,"disableDiscussionSpamRecaptchaBypass":false,"disableDocsAudit":false,"disablePageLinter":false,"disablePasswordlessLogin":false,"disableSignups":false,"disableSuperframe":false,"dynamicLlmsTxt":false,"enableOidc":false,"enterprise":false,"enterpriseAiWriter":false,"externalSdkSnippets":false,"gittoUseConnectionPooling":false,"gittoUseExperimentalMDXCache":false,"gitTranslations":false,"googleAuthEnabled":false,"graphql":false,"hideAiFeatures":false,"hideEnforceSSO":false,"hubGoBridge":false,"inlineComments":false,"inlineLintingViolations":false,"jwtReplacePermissions":false,"mcpOauth":false,"mcpSendFeedback":false,"mdx":false,"mdxish":true,"mdxishEditor":true,"mdxSanitizeComments":false,"newEditorDash":true,"newExplorerReducer":false,"newIframeStructure":false,"oauth":false,"passwordlessLogin":"default","prefetch":false,"rdmdCompatibilityMode":false,"requiresJQuery":false,"reviewWorkflow":true,"singleProjectEnterprise":false,"staging":false,"star":false,"streamingSsr":false,"superHub":true,"superHubBranchReviewSummaries":false,"superHubMigrationSelfServeFlow":true,"superHubMsTeamsAppPackage":false,"superHubMsTeamsNotifications":false,"superHubMultiGuides":false,"superHubPlanManagement":true,"superHubPreview":false,"superHubSlack":false,"superHubSlackNotifications":false,"superHubUiTesting":false,"translation":false,"useDeprecatedSafelistMethod":false,"dashReact":false,"superHubBranchReviewActions":false},"versions":[{"__v":2,"_id":"624df7913f2c7b009696e5a1","createdAt":"2022-04-06T20:26:57.652Z","updatedAt":"2025-11-11T22:56:45.
142046Z","project":"624df78f3f2c7b009696e59b","version":"1","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":[],"releaseDate":"2022-04-06T20:26:57.652Z","pdfStatus":"","apiRegistries":[{"filename":"ipdata.json","uuid":"1ott3nl3f5jm5d"}],"source":"readme"}],"stable":{"__v":2,"_id":"624df7913f2c7b009696e5a1","createdAt":"2022-04-06T20:26:57.652Z","updatedAt":"2025-11-11T22:56:45.046Z","project":"624df78f3f2c7b009696e59b","version":"1","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":[],"releaseDate":"2022-04-06T20:26:57.652Z","pdfStatus":"","apiRegistries":[{"filename":"ipdata.json","uuid":"1ott3nl3f5jm5d"}],"source":"readme"},"_id":"624df78f3f2c7b009696e59b","accessRules":{"branch_approve":{"admin":true,"editor":false},"branch_merge":{"admin":true,"editor":false},"version_edit":{"admin":true,"editor":false}},"ai":{"chat":{"knowledge":{"use_project_knowledge":false},"models":[]},"discovery":{"content_signal":{"ai_train":false,"search":false,"ai_input":false},"link_headers":true,"markdown_negotiation":true,"agent_hint_banner":true,"api_catalog":true,"agent_skills_index":true,"mcp_server_card":true,"webmcp":true,"oauth":{"type":"none","issuer_url":"","authorization_servers":[],"resource_identifier":"","scopes_supported":[]},"show_sub_pages":false,"show_sibling_pages":false,"show_whats_next":false}},"appearance":{"allowApiExplorerJsonEditor":false,"borderRadius":"default","changelog":{"layoutExpanded":false,"showAuthor":true,"showExactDate":false},"referenceFlatSections":"disabled","referenceLayout":"row","referenceParamFont":"default","referenceParamInputs":"all","referenceSimpleMode":true,"methodBadgeStyle":"classic","oneOfLayout":"dropdown","showExactDate":false,"showMethodInSidebar":true,"link_logo_to_url":false,"theme":"solid","theme_preset":"default","colorScheme":"system","overlay":"triangles","landing":true,"sticky":false,"hide_logo":true,"childrenAsPills":false,"subheaderStyle":"links","splitReferenceDocs":false,"showMetricsInReference":true,"rdmd":{"callouts":{"useIconFont":false},"theme":{"background":"","border":"","markdownEdge":"","markdownFont":"","markdownFontSize":"","markdownLineHeight":"","markdownRadius":"","markdownText":"","markdownTitle":"","markdownTitleFont":"","mdCodeBackground":"","mdCodeFont":"","mdCodeRadius":"","mdCodeTabs":"","mdCodeText":"","tableEdges":"","tableHead":"","tableHeadText":"","tableRow":"","tableStripe":"","tableText":"","text":"","title":""}},"main_body":{"type":"links"},"colors":{"highlight":"","main":"#5770FF","main_dark":"","main_alt":"","header_text":"","body_highlight":"#5770FF","body_highlight_dark":"","custom_login_link_color":"","page_background":"","page_background_dark":"","background_tint":"","background_tint_dark":"","border":"","border_dark":"","header":"","header_dark":"","askai_button_bg":"","askai_button_bg_dark":"","sidebar_border":"","sidebar_border_dark":""},"typography":{"headline":"Open+Sans:400:sans-serif","body":"Open+Sans:400:sans-serif","code":"","spacing":null,"typekit":false,"tk_key":"","tk_headline":"","tk_body":""},"header":{"img":[],"img_size":"auto","img_pos":"tl","linkStyle":"buttons","style":"solid","subnav":{"alignment":"start"}},"body":{"style":"none"},"promos":[{"_id":"624df78f3f2c7b009696e59d","title":"The ipdata Developer Hub","text":"Welcome to the ipdata developer hub. You'll find comprehensive guides and documentation to help you start working with ipdata as quickly as possible, as well as support if you get stuck. Let's jump right in!","extras":{"type":"buttons","buttonPrimary":"get-started","buttonSecondary":"none"}}],"layout":{"full_width":false,"style":"classic","sticky_header":null},"logo":["https://files.readme.io/93bacbc-ipdata--3-.svg","ipdata--3-.svg",1620,485,"#000000"],"loginLogo":[],"logo_white":["https://files.readme.io/4f34357-ipdata-logo-white.svg","ipdata-logo-white.svg",1620,485,"#000000"],"logo_white_use":true,"logo_large":false,"logo_size":"default","favicon":["https://files.readme.io/8c0ba2a-favicon.ico","favicon.ico",1000,1000,"#3598d4"],"tocVariant":"line","stylesheet":"","stylesheet_hub2":"","stylesheet_hub3":"","javascript":"","javascript_hub2":"","html_promo":"","html_body":"","html_footer":"","html_head":"\u003cscript>!function(){var e=window.Cohere=window.Cohere||[];
142if(e.invoked)console.error(\"Tried to load Cohere twice\");else{e.invoked=!0,e.snippet=\"0.2\",e.methods=[\"init\",\"identify\",\"stop\",\"showCode\",\"getSessionUrl\",\"makeCall\",\"addCallStatusListener\",\"removeCallStatusListener\",\"widget\"],e.methods.forEach(function(o){e[o]=function(){var t=Array.prototype.slice.call(arguments);t.unshift(o),e.push(t)}});var o=document.createElement(\"script\");o.type=\"text/javascript\",o.async=!0,o.src=\"https://static.cohere.so/main.js\",o.crossOrigin=\"anonymous\";var t=document.getElementsByTagName(\"script\")[0];t.parentNode.insertBefore(o,t)}}();window.Cohere.init(\"XTAp8aIl5EMb83YtSw-ohg5U\");\u003c/script>","html_footer_meta":"","global_landing_page":{"html":"","redirect":""},"html_hidelinks":false,"collapsibleCategories":false,"showBreadcrumbs":false,"showPageIcons":true,"showVersion":true,"searchModal":"classic","hideTableOfContents":false,"nextStepsLabel":"","ai_dropdown":"enabled","ai_options":{"ask_ai":"disabled","chatgpt":"enabled","claude":"enabled","clipboard":"enabled","copilot":"enabled","mcp":{"command":"enabled","config":"enabled","cursor":"enabled","vscode":"enabled"},"view_as_markdown":"enabled"}},"custom_domain":"docs.ipdata.co","description":"","hstsIncludeSubdomains":false,"planSchedule":{"stripeScheduleId":null,"changeDate":null,"nextPlan":null},"planStatus":"active","error404":"","first_page":"landing","git":{"migration":{"createRepository":{"end":"2025-11-11T22:56:45.660Z","start":"2025-11-11T22:56:45.278Z","status":"successful"},"transformation":{"end":"2025-11-11T22:56:46.366Z","start":"2025-11-11T22:56:45.848Z","status":"successful"},"migratingPages":{"end":"2025-11-11T22:56:46.549Z","start":"2025-11-11T22:56:46.427Z","status":"successful"},"enableSuperhub":{"end":"2025-11-11T22:58:02.693Z","start":"2025-11-11T22:58:02.692Z","status":"successful"}},"migrationType":"default","renamedSlugs":[]},"glossaryTerms":[{"_id":"624df78f3f2c7b009696e59c","term":"parliament","definition":"Owls are generally solitary, but when seen together the group is called a 'parliament'!"},{"_id":"6281533e5b77aa00653b3029","term":"ASN","definition":"An ASN is a 32-bit number than identifies an Autonomous System. An  autonomous system (AS) is a large network or group of networks that has a unified routing policy."},{"_id":"628158066be9a1006dbbf451","term":"RESTful","definition":"A web API that obeys the REST constraints is informally described as RESTful. RESTful web APIs are typically loosely based on HTTP methods to access resources via URL-encoded parameters and the use of JSON or XML to transmit data. - Wikipedia"},{"_id":"62816bbf94393b0013a9b95a","term":"bogon","definition":"Bogons are IP addresses that should not be routed because they are not allocated, or they are allocated for private use.\nIP space that has been allocated to an RIR, but not assigned by that RIR to an actual ISP or other end-user\nPrivate and reserved addresses defined by RFC 1918, RFC 5735, and RFC 6598 and netblocks that have not been allocated to a regional internet registry.\nUnallocated (Free) Address Space, generated on a daily basis using the IANA registry files, the Regional Internet Registry stats files and the Regional Internet Registry whois data."},{"_id":"628242fa12ed7600135ce201","term":"JSONL","definition":"A text format where each line is a valid JSON object and delimited by a newline. Also called new-line delimited JSON (NDJSON)."}],"graphqlSchema":"","gracePeriod":{"enabled":false,"endsAt":null},"healthCheck":{"provider":"statusPage","settings":{"status":false,"url":"","page":"wb4ljr0q8dfj"}},"i18n":{"defaultLanguage":"en","languages":[{"code":"en","type":"manual"}],"state":"enabled"},"intercom":"ifogoroa","is_active":true,"branchSharing":"enabled","internal":"","jwtExpirationTime":0,"landing_bottom":[{"type":"docs","alignment":"left","pageType":"Documentation"},{"type":"three","alignment":"left","group0":{"title":"","text":""},"group1":{"title":"","text":""},"group2":{"title":"","text":""}},{"type":"text","alignment":"left"},{"type":"text-media","alignment":"left","side":"left","mediaType":"image"}],"llms_txt":true,"llms_txt_options":{"split":false,"split_categories":false,"query":null,"use_custom":null},"mcp":{"state":"disabled"},"mdxishMigrationStatus":{"migratedFrom":"mdx"},"metrics":{"monthlyLimit":0,"monthlyPurchaseLimit":0,"thumbsEnabled":true,"meteredBilling":{}},"modules":{"landing":false,"docs":true,"examples":true,"reference":true,"graphql":false,"changelog":false,"discuss":false,"suggested_edits":false,"custompages":false,"tutorials":false}
142,"name":"ipdata","nav_names":{"docs":"Documentation","reference":"","changelog":"","discuss":"","recipes":"","tutorials":""},"oauth_url":"https://dashboard.ipdata.co/sign-in.html?source=readme","onboardingCompleted":{"api":true,"appearance":false,"documentation":true,"domain":false,"jwt":true,"logs":false,"metricsSDK":false,"aiReady":false,"team":false,"gitSync":false},"openapiVisibility":"admin","owlbot":{"copilot":{"enabled":false,"hasBeenUsed":false,"installedCustomPage":""},"enabled":false,"newExperience":true,"v2":false,"isPaying":false,"exampleQuestions":{"question1":"","question2":"","question3":""},"customization":{"tone":"neutral","customTone":"","answerLength":"medium","forbiddenWords":"","defaultAnswer":"","showAiDisclaimer":false,"showInSearch":true,"advancedInstruction":"","advancedModeEnabled":false},"llmOptions":{"model":{}},"modelList":[],"knowledge":"","knowledgeSegregation":false},"plan":"startup2018","planOverride":"business2018","readmeScore":{"totalScore":165,"components":{"newDesign":{"enabled":true,"points":25},"reference":{"enabled":true,"points":50},"tryItNow":{"enabled":true,"points":35},"syncingOAS":{"enabled":false,"points":10},"customLogin":{"enabled":true,"points":25},"metrics":{"enabled":false,"points":40},"recipes":{"enabled":false,"points":15},"pageVoting":{"enabled":true,"points":1},"suggestedEdits":{"enabled":true,"points":10},"support":{"enabled":true,"points":5},"htmlLanding":{"enabled":false,"points":5},"guides":{"enabled":true,"points":10},"changelog":{"enabled":false,"points":5},"glossary":{"enabled":true,"points":1},"variables":{"enabled":true,"points":1},"integrations":{"enabled":true,"points":2}}},"reCaptchaSiteKey":"","reference":{"alwaysUseDefaults":true,"autoFillRequestExample":false,"defaultExpandResponseExample":false,"defaultExpandResponseSchema":false,"enableOAuthFlows":false,"fillOptionalObjectsOnExpand":true,"showOpenAPIDownload":false},"seo":{"overwrite_title_tag":false},"searchSettings":{"default_to_current_project":false,"show_project_filter":true,"sort_projects_alphabetically":false},"ssl":{"minTLS":"1.2"},"subdomain":"ipdata","subpath":"","topnav":{"left":[],"right":[{"type":"user"}],"bottom":[],"edited":false},"trial":{"trialDeadlineEnabled":true,"trialEndsAt":"2022-04-20T20:26:55.503Z"},"translate":{"provider":"transifex","show_widget":false,"key_public":"","org_name":"","project_name":"","languages":[]},"url":"https://ipdata.co","variableDefaults":[{"name":"url","default":"api","source":"","type":""}],"childrenProjects":[],"derivedPlan":"business2018","fullBaseUrl":"https://docs.ipdata.co/","isExternalSnippetActive":false,"isPublished":true,"planTrial":"business2018","shouldGateDash":false,"webhookEnabled":false,"isHubEditable":true},"projectStore":{"data":{"allow_crawlers":"disabled","canonical_url":null,"default_version":{"name":"1"},"description":null,"git":{"repository_name":null,"connection":{"repository":null,"organization":null,"status":"none"},"remediation_status":null,"remediated_at":null,"remediation_initiated_by":null,"remediation_dry_run":null,"remediation_job_id":null},"glossary":[{"term":"parliament","definition":"Owls are generally solitary, but when seen together the group is called a 'parliament'!","inherited":false},{"term":"ASN","definition":"An ASN is a 32-bit number than identifies an Autonomous System. An  autonomous system (AS) is a large network or group of networks that has a unified routing policy.","inherited":false},{"term":"RESTful","definition":"A web API that obeys the REST constraints is informally described as RESTful. RESTful web APIs are typically loosely based on HTTP methods to access resources via URL-encoded parameters and the use of JSON or XML to transmit data. - Wikipedia","inherited":false},{"term":"bogon","definition":"Bogons are IP addresses that should not be routed because they are not allocated, or they are allocated for private use.\nIP space that has been allocated to an RIR, but not assigned by that RIR to an actual ISP or other end-user\nPrivate and reserved addresses defined by RFC 1918, RFC 5735, and RFC 6598 and netblocks that have not been allocated to a regional internet registry.\nUnallocated (Free) Address Space, generated on a daily basis using the IANA registry files, the Regional Internet Registry stats files and the Regional Internet Registry whois data.","inherited":false},{"term":"JSONL","definition":"A text format where each line is a valid JSON object and delimited by a newline. Also called new-line delimited JSON (NDJSON).","inherited":false}],"homepage_url":"https://ipdata.co","created_at":null,"updated_at":null,"id":"624df78f3f2c7b
142009696e59b","name":"ipdata","parent":null,"sitemap":"disabled","llms_txt":"enabled","subdomain":"ipdata","suggested_edits":"disabled","notification_settings":{"project_topic_key":null},"uri":"/projects/me","variable_defaults":[{"name":"url","default":"api","source":"","type":"","id":null}],"webhooks":[],"api_designer":{"allow_editing":"enabled"},"custom_login":{"jwt_secret":null,"jwt_expiration_time":0,"login_url":"https://dashboard.ipdata.co/sign-in.html?source=readme","logout_url":null},"features":{"mdx":"disabled"},"onboarding_completed":{"api":true,"appearance":false,"documentation":true,"domain":false,"jwt":true,"logs":false,"metricsSDK":false,"ai_ready":false,"team":false,"git_sync":false},"owner":{"id":null,"email":null,"name":null},"privacy":{"branches":"enabled","openapi":"admin","password":null,"view":"public"},"refactored":{"status":"enabled","migrated":"successful"},"seo":{"overwrite_title_tag":"disabled"},"ssl":{"min_tls_version":"1.2"},"hsts":{"include_subdomains":false},"feature_rules":{"merge":{"requirements":[],"allow_override":[]}},"god_mode":{"is_active":null,"flags":{},"admin_limit_override":null,"notes":null,"legacy_css":null,"children_limit":null,"owlbot":{"enabled":null,"new_experience":null,"v2":null,"trial_ends_at":null},"salesforce":{"account_id":null},"enterprise_notes":{"account_name":null,"owner_csm":null,"owner_sales":null,"status":null,"superhub_migration_eligibility":null},"mdxish_migration_status":{"migrated_at":null,"migrated_from":null,"reverted_at":null,"source":null}},"mcp":{"state":"disabled","custom_tools":[],"disabled_routes":[],"disabled_tools":[],"has_password":false,"oauth_pages":{"auth_url":null,"success_url":null,"error_url":null},"openai_challenge_token":null,"oauth_credentials":{},"privacy":{"password":null}},"plan":{"type":"business2018","admin_limit_override_active":false,"bills_extra_admin_seats":false,"override":null,"stripe_subscription_id":null,"grace_period":{"enabled":false,"end_date":null},"trial":{"active":false,"enabled":null,"expired":false,"end_date":"2022-04-20T20:26:55.503Z"}},"redirects":[],"reference":{"api_sdk_snippets":"enabled","experimental_performance_mode":"disabled","defaults":"always_use","show_openapi_download":"disabled","fill_optional_objects_on_expand":"enabled","json_editor":"disabled","method_badge_style":"classic","flat_sections":"disabled","param_font":"default","param_inputs":"all","oauth_flows":"disabled","oneof_layout":"dropdown","request_history":"enabled","request_examples":"collapsed","response_examples":"collapsed","response_schemas":"collapsed","show_method_in_sidebar":"enabled","webhook_badge":"pill","sdk_snippets":{"external":"disabled"}},"llms_txt_options":{"split":{"enabled":"disabled","categories":"disabled"},"query":{"enabled":"disabled"},"custom":{"enabled":"disabled"}},"custom_domain":{"name":"docs.ipdata.co","target":null,"validation":{"status":null,"code":null}},"ai":{"discovery":{"content_signal":{"ai_train":false,"search":false,"ai_input":false},"link_headers":true,"markdown_negotiation":true,"agent_hint_banner":true,"show_sub_pages":false,"show_sibling_pages":false,"show_whats_next":false,"api_catalog":true,"agent_skills_index":true,"mcp_server_card":true,"webmcp":true,"oauth":{"type":"none","issuer_url":null,"authorization_servers":[],"resource_identifier":null,"scopes_supported":[]}},"hidden":false,"readiness":{"status":null,"score":null,"grade":null,"category_scores":null,"pages":null,"summary":null,"results":null,"resolutions":null,"cap":null,"last_checked_at":null,"error_message":null},"docs_audit":{"enabled":true},"inline_editor":{"enabled":true},"linter":{"enabled":true},"chat":{"enabled":true,"models":[],"knowledge":{"custom_knowledge":null,"use_project_knowledge":false}},"owlbot":{"enabled":false,"new_experience":true,"v2":false,"placements":["header","in_search"],"is_paying":false,"trial":{"is_paying":false}},"slack":{"writer":{"allow_branch_deletion":false,"allow_branch_merge":false}}},"integrations":{"aws":{"readme_webhook_login":{"region":null,"external_id":null,"role_arn":null,"usage_plan_id":null}},"bing":{"verify":null},"google":{"analytics":null,"site_verification":null},"heap":{"id":null},"koala":{"key":null},"localize":{"key":null},"postman":{"key":null,"client_id":null,"client_secret":null,"is_connected":false},"recaptcha":{"site_key":null,"secret_key":null},"segment":{"key":null,"domain":null},"speakeasy":{"key":null,"spec_url":null},"typekit":{"key":null},"zendesk":{"subdomain":null},"intercom":{"app_id":"ifogoroa","secure_mode":{"key":null}}},"pages":{"default_visibility":"public","not_found":null},"permissions":{"appearance":{"private_label":"enabled","custom_code":{"css":"enabled","html":"enabled","js":"disabled"}},"branches":{"merge":{"admin":true,"editor":false},"approve":{"admin":true,"editor":false}},"versions":{"edit":{"admin":true,"editor":false}}},"metrics":{"monthly_purchase_limit":0,"monthly_limit":0,"pii":{"enabled":true},"voting":{"page_quality":{"enabled":true}}},"health_check":{"provider":"statuspage","settings":{"manual":{"status":"down","url":null}
142,"statuspage":{"id":"wb4ljr0q8dfj"}}},"appearance":{"border_radius":"default","toc_variant":"line","changelog":{"layout":"collapsed","show_author":true,"show_exact_date":false},"layout":{"full_width":"disabled","sticky_header":null,"style":"classic"},"brand":{"primary_color":"#5770FF","primary_color_dark":null,"link_color":"#5770FF","link_color_dark":null,"theme":"system","theme_preset":"default","background":{"color":null,"color_dark":null,"tint":null,"tint_dark":null},"border":{"color":null,"color_dark":null},"header":{"color":null,"color_dark":null},"sidebar":{"border":null,"border_dark":null},"askai":{"color":null,"color_dark":null}},"markdown":{"callouts":{"icon_font":"emojis"}},"table_of_contents":"enabled","whats_next_label":null,"landing_page":{"sections":[{"type":"docs","alignment":"left","title":null,"text":null,"html":null,"page_type":"Documentation","side":null,"media_type":null,"media_html":null,"media_image":null,"media_code":null,"group0":null,"group1":null,"group2":null},{"type":"three","alignment":"left","title":null,"text":null,"html":null,"page_type":null,"side":null,"media_type":null,"media_html":null,"media_image":null,"media_code":null,"group0":{"title":"","text":""},"group1":{"title":"","text":""},"group2":{"title":"","text":""}},{"type":"text","alignment":"left","title":null,"text":null,"html":null,"page_type":null,"side":null,"media_type":null,"media_html":null,"media_image":null,"media_code":null,"group0":null,"group1":null,"group2":null},{"type":"text-media","alignment":"left","title":null,"text":null,"html":null,"page_type":null,"side":"left","media_type":"image","media_html":null,"media_image":null,"media_code":null,"group0":null,"group1":null,"group2":null}],"promo":{"title":"The ipdata Developer Hub","text":"Welcome to the ipdata developer hub. You'll find comprehensive guides and documentation to help you start working with ipdata as quickly as possible, as well as support if you get stuck. Let's jump right in!","content_type":"buttons","html":null,"button_primary":"get-started","button_secondary":"none"}},"footer":{"readme_logo":"hide"},"logo":{"size":"default","dark_mode":{"uri":null,"url":"https://files.readme.io/4f34357-ipdata-logo-white.svg","name":"ipdata-logo-white.svg","width":1620,"height":485,"color":"#000000","links":{"original_url":null}},"main":{"uri":null,"url":"https://files.readme.io/4f34357-ipdata-logo-white.svg","name":"ipdata-logo-white.svg","width":1620,"height":485,"color":"#000000","links":{"original_url":null}},"favicon":{"uri":null,"url":"https://files.readme.io/8c0ba2a-favicon.ico","name":"favicon.ico","width":1000,"height":1000,"color":"#3598d4","links":{"original_url":null}}},"typography":{"heading_font":null,"body_font":null,"code_font":null,"spacing":null,"custom_heading":{"url":null,"filename":null,"format":null},"custom_code":{"url":null,"filename":null,"format":null},"custom_body":{"regular":{"url":null,"filename":null,"format":null},"medium":{"url":null,"filename":null,"format":null},"semibold":{"url":null,"filename":null,"format":null}}},"ai":{"dropdown":"enabled","options":{"ask_ai":"disabled","chatgpt":"enabled","claude":"enabled","clipboard":"enabled","view_as_markdown":"enabled","mcp":{"command":"enabled","config":"enabled","cursor":"enabled","vscode":"enabled"}}},"custom_code":{"css":null,"js":null,"html":{"header":"\u003cscript>!function(){var e=window.Cohere=window.Cohere||[];if(e.invoked)console.error(\"Tried to load Cohere twice\");else{e.invoked=!0,e.snippet=\"0.2\",e.methods=[\"init\",\"identify\",\"stop\",\"showCode\",\"getSessionUrl\",\"makeCall\",\"addCallStatusListener\",\"removeCallStatusListener\",\"widget\"],e.methods.forEach(function(o){e[o]=function(){var t=Array.prototype.slice.call(arguments);t.unshift(o),e.push(t)}});var o=document.createElement(\"script\");o.type=\"text/javascript\",o.async=!0,o.src=\"https://static.cohere.so/main.js\",o.crossOrigin=\"anonymous\";var t=document.getElementsByTagName(\"script\")[0];t.parentNode.insertBefore(o,t)}}();window.Cohere.init(\"XTAp8aIl5EMb83YtSw-ohg5U\");\u003c/script>","home_footer":null,"page_footer":null}},"header":{"type":"solid","gradient_color":null,"subnav":{"alignment":"start"},"link_style":"buttons","overlay":{"fill":"auto","type":"triangles","position":"top-left","image":{"uri":null,"url":null,"name":null,"width":null,"height":null,"color":null,"links":{"original_url":null}}}}
142,"navigation":{"collapsible_categories":"disabled","breadcrumbs":"disabled","first_page":"landing_page","left":[],"logo_link":"landing_page","page_icons":"enabled","right":[{"type":"user_controls","title":null,"url":null,"custom_page":null}],"search_modal":"classic","sub_nav":[],"subheader_layout":"links","version":"enabled","links":{"home":{"label":"Home","visibility":"disabled"},"graphql":{"label":"GraphQL","visibility":"disabled","schema":null},"guides":{"label":"Guides","alias":"Documentation","visibility":"enabled"},"reference":{"label":"API Reference","alias":null,"visibility":"enabled"},"recipes":{"label":"Recipes","alias":null,"visibility":"disabled"},"changelog":{"label":"Changelog","alias":null,"visibility":"disabled"},"discussions":{"label":"Discussions","alias":null,"visibility":"disabled"}}}},"i18n":{"defaultLanguage":"en","languages":[{"code":"en","type":"manual"}],"state":"disabled","do_not_translate_words":[],"ai_unlocked_languages":null}}},"version":{"_id":"624df7913f2c7b009696e5a1","version":"1","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["624df7913f2c7b009696e5a3","624df7913f2c7b009696e5a3","624df7913f2c7b009696e5a9","62801c4125987d00553e9fd5","62801c48594dad001c108c15","62801c5d8f701a003766f3e8","62801c614778e30345f62cb2","628022eeda7c3a00a01e3b3e","62811b1a1938d500350d2208","6376bf60127d99000317446a"],"project":"624df78f3f2c7b009696e59b","releaseDate":"2022-04-06T20:26:57.652Z","createdAt":"2022-04-06T20:26:57.652Z","__v":2,"apiRegistries":[{"filename":"ipdata.json","uuid":"1ott3nl3f5jm5d"}],"pdfStatus":"","source":"readme","updatedAt":"2025-11-11T22:56:45.046Z"}},"i18n":{"language":"en","translations":{"en":{"common":{"ai":{"aiOpenFailed":"Failed to open SuperHub AI panel.","askAi":"Ask AI","askAiAriaLabel":"Open Ask AI Assistant","chatgpt":"Open in ChatGPT","claude":"Open in Claude","copied":"Copied","mdCopy":"Copy Page","mdOpenFailed":"Failed to open as markdown","mdView":"View as Markdown","mcp":{"appNotFound":"{{app}} does not appear to be installed.","command":"Copy MCP Command","config":"Copy MCP Config","copied":"Copied to clipboard!","cursor":"Connect to Cursor","downloadApp":"Download {{app}}","header":"MCP","vscode":"Connect to VS Code"},"noMdToCopy":"No markdown content available to copy.","openFailed":"Failed to open {{option}}.","settings":{"askAiRequired":"Ask AI must be enabled for your project","description":"Adds a dropdown menu for sharing docs with AI assistants.","disabledInternal":"Disabled for internal docs — set to public to enable","dropdownOptions":"Dropdown Options","preview":"Preview","saveFailed":"Failed to save AI dropdown configuration. Please try again.","title":"AI Dropdown"}},"aiInlineEditor":{"disabled":"The AI inline editor has been disabled for this project."},"apiConfig":{"allRequests":"All Requests","allRequestsFilter":"All Requests","apiKeysNotFound":"No API keys found.","apiKeysNotSynced":"API keys are not synced with this developer hub.","apiRequests":"API Requests","authentication":"Authentication","credentials":"Credentials","dayFilter":"Last 24 Hours","emptyStatePrompt":"Make a request to see them here or \u003ca>Try It\u003c/a>!","error":"Error","errorRequestsFilter":"400 & 500","gettingStarted":"Getting Started","logInPrompt":"Log in to see your API keys","monthFilter":"Last 30 Days","moreErrors":"More Errors","moreRequests":"More Requests","myRecentErrors":"My Recent Errors","myRecentRequests":"My Recent Requests","myRequests":"My Requests","myTopEndpoints":"My Top Endpoints","personalizedDocsSetup":"Set up \u003cButton>Personalized Docs\u003c/Button> to show users their API keys.","pickALanguage":"Pick a language","popularEndpoints":"Popular Endpoints","success":"Success","weekFilter":"Past week","yourApiKeys":"Your API Keys"},"attribution":"by {{attribution}}","auth":{"any":"any","apiKey":"API Key","apiKeyPrompt":"Get API Key","apiKeyShow":"Show API Key","apiKeyHide":"Hide API Key","apiKeyToggle":"Toggle API Key","apiInfo":"API Info","authenticate":"Authenticate","authorize":"Authorize","authorizationUrl":"Authorization URL","authorizedScopes":"Authorized scopes for this token","authorizedScopesEmpty":"Token has no authorized scopes","bearer"
142:"Bearer","clearSelection":"Clear Selection","clientId":"Client ID","deselectAll":"Deselect All","credentialMessage":"{{projectName}} accepts {{count}} credential methods. You can use {{option}} of them.","credentialsFor":"Credentials for {{name}}","credentialsForMd":"Credentials for `{{name}}`","either":"eitherLog in to use your API keys","grantType":"Grant Type","info":{"base64":"Your username and password will be combined with a : to form a base64-encoded string: `ENCODED_TOKEN`","basic":"Your username and password are being sent in the [header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Authorization) of the request.","bearer":"\n  Bearer authentication gives access to the “bearer of the token” and must be sent in the Authorization header. For example:\n  ```bash\n  curl --request POST \\\n       --url https://httpbin.org/anything/bearer\n       --header 'Authorization: Bearer BEARER_TOKEN'\n  ```\n  ","cookie":"Your API Key is being sent as a [cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies).","header":"Your API Key is sent in the request [header](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers).","jwt":"The bearer token's format is JSON Web Token (JWT). Read more at [JWT.io](https://jwt.io/).","query":"Your API Key is being sent as a query parameter in the [URL](https://developer.mozilla.org/en-US/docs/Web/API/URL)."},"infoTable":{"contact":"Contact","description":"Description","identifier":"Identifier","license":"License","name":"Name","termsOfService":"Terms of Service","title":"Title","summary":"Summary","url":"URL","version":"Version"},"information":"Information","label":"Label","lastUsed":"Last Used","logInPrompt":"Log in to use your API keys","logIn":"Log In","logOut":"Log Out","or":"or","password":"password","passwordHideLabel":"Hide","passwordShowLabel":"Show","reAuthorize":"Re-Authorize","required":"required","requiredScopes":"Required Scopes","requiredScopesMissingMsg_one":"Missing {{count}} required scope","requiredScopesMissingMsg_other":"Missing {{count}} required scopes","scopes":"Scopes","scopeGroupAllRequired":"All {{count}} scopes required","scopesOrRequired":"At least 1 scope group required","scopesMissingCount":"({{count}} missing from this token)","scopesMissingMsg_one":"This operation requires {{count}} additional scope","scopesMissingMsg_other":"This operation requires {{count}} additional scopes","scopesRequiredMsg":"Scopes required for this operation","scopesRequiredNoneMsg":"No scopes required for this operation","selectAll":"Select All","selectCredentials":"Select Credentials","token":"token","tokenDetails":"Token Details","tokenRotationMessage":"We recommend you rotate this token.","tokenUrl":"Token URL","useOwnToken":"Use Your Own Token","username":"username"},"close":"Close","colorScheme":{"dark":"Dark","light":"Light","system":"System","title":"Color Scheme"},"changelog":{"added":"Added","deprecated":"Deprecated","fixed":"Fixed","improved":"Improved","removed":"Removed","title":"Changelog"},"copyToClipboard":{"copiedFull":"Copied to clipboard!","copiedShort":"Copied!","copyFull":"Copy to clipboard","copyShort":"Copy","failed":"Failed to copy to clipboard.","unable":"Unable to copy"},"discussions":{"addCommentLabel":"Add Comment","adminLabel":"Admin","answered":"Answered","askQuestion":"Ask a Question","backToAll":"Back to all","blankBodyError":"Your post body cannot be blank.","blankCommentError":"Your comment cannot be blank.","blankPostError":"Your post cannot be blank.","blankTitleError":"Your post title cannot be blank.","cancelButtonLabel":"Cancel","commentAndMarkAnswered":"Comment and mark answered","commentAndReopen":"Comment and reopen","deleteButtonLabel":"Delete","deleteCommentConfirmation":"Are you sure you want to delete this comment?","deleteCommentPermanentConfirmation":"Are you sure you want to permanently delete this comment?","deleteComentSuccess":"This comment has been deleted","deletePermanentlyButtonLabel":"Permanently Delete","deletePostConfirmation":"Are you sure you want to delete this post?","editButtonLabel":"Edit","editedLabel":"edited","emailInputAriaLabel":"[email protected]","emailInputPlaceholder":"Your Email","errorMessagePrefix":"Error:","faqAddLabel":"Add to FAQ","faqRemoveLabel":"Remove from FAQ","faqsLabel":"FAQs","logInToComment":"\u003cb>Log in\u003c/b> to add a comment.","markAsAnswered":"Mark as answered","markAsUnanswered":"Mark as unanswered","markCommentSpamLabel":"Mark this comment as spam","markPostSpamLabel":"Mark this post as spam","nameAndEmailError":"Please fill out your name and email.","nameInputAriaLabel":"Your name","nameInputPlaceholder":"Full name","permanentlyDeleteLabel":"Permanently delete","questionInputAriaLabel":"New question","recaptchaInvalidError":"Invalid ReCaptcha tokens.","recaptchaRequiredError":"Please complete the reCaptcha verification.","recentLabel":"Recent","saveButtonLabel":"Save","submitButtonLabel":"Post Question","tagButtonLabel":"Tag","tagInputPlaceholder":"Enter tag","titleInputAriaLabel":"Question title","titleInputPlaceholder":"Your question title","unansweredLabel":"Unanswered","voteCountLabel":"{{count}} vote","voteCountLabel_plural":"{{count}} votes"},"docsAudit":{"disabled":"The AI Docs Audit has been disabled for this project.","scheduleDisabled":"Disabled by admin"},"emptyState":{"changelog":{"title":"No Changelogs"},"discussion":{"actionLabel":"New Question","description":"Nobody's asked a question yet. Be the first!","title":"No Discu
142ssions"},"guide":{"title":"No Guides"},"recipe":{"title":"No Recipes"},"reference":{"title":"No API Endpoints"}},"llmsTxt":{"banner":"Fetch the complete documentation index at: {{url}}. Use this file to discover all available pages before exploring further.","categoryIndexNote":"full category index","documentation":"Documentation","documentationFor":"Documentation for {{name}}","groupIndexHint":"Each project below either links to its own llms.txt, which contains a full index of that project's documentation, or inlines the index its authors wrote by hand. Where links are listed, the section and category ones narrow to that part of the docs.","heading":"{{name}} Documentation","hubBanner":"For AI agents: visit {{url}} for an index of all pages formatted in Markdown and endpoints in OpenAPI.","indexLink":"{{title}} index","mdSuffixHint":"Append .md to any documentation page URL to get its markdown version.","openapiDefinition":"OpenAPI definition","projectDocumentation":"{{name}} documentation","queryCapabilityHint":"If a page title in the index already matches your question, fetch that page directly. When no title matches, or finding one means reading a long index, attach a query parameter in the root llms.txt URL like {{url}}?query=\u003csearch-query> using 2-4 specific keywords to get only the matching pages, most relevant first.","queryFailedHint":"Search is temporarily unavailable, so this is the complete index rather than the pages matching `{{query}}`.","queryNoResultsHint":"No pages matched `{{query}}`. Fetch {{url}} for the complete index.","queryResultsHint":"Pages matching `{{query}}`, most relevant first. Fetch {{url}} for the complete index.","searchResults":"Search Results","sectionIndexNote":"full section index","siblingPages":"Sibling pages","splitCategoriesHint":"Category links narrow to a single category.","splitIndexHint":"Each section below links to its own llms.txt, which indexes every page in that section.","subPages":"Sub pages"},"more":"more…","next":"Next","onlyVisibleToAdmins":"Only visible to ReadMe admins","owlbotChat":{"assistant":"Assistant","clearChat":"Clear chat history","closeChat":"Close chat","emptyMessage":"I’ll help you find answers in the docs","emptyTitle":"Ask AI","failureTitle":"Ask AI","fallbackHeading":"Something went wrong with Ask AI","fallbackMessage":"Please try refreshing the page or contact support if the problem persists.","inputPlaceholder":"Ask AI anything…","interrupted":"Ask AI couldn’t finish this answer. Please try again.","messageError":"Something went wrong. Try changing your message and sending it again.","providerFailure":"Ask AI is temporarily unavailable. Please try again in a moment.","sendFailure":"Failed to send message. Please try again.","resend":"Resend?","sourceCount_one":"{{count}} source","sourceCount_other":"{{count}} sources","sourceLabel":"{{title}} ({{section}})","streamError":"...Something went wrong.","tryAgain":"Try Again","typingLabel":"Generating","voteFailure":"Failed to record vote. It may take a moment for the message to be saved. Please try again.","aiDisclaimer":"AI can get things wrong, so double check any info or code. You're responsible for verifying results are accurate and fit your needs before taking action. Do not input sensitive information.","voteLabelDown":"Not helpful","voteLabelUp":"Helpful","thinkingDefault":"Thinking...","thinkingSearchKnowledge":"Searching knowledge base...","thinkingSearchPages":"Searching for keywords...","thinkingListPages":"Looking up pages...","thinkingReadPage":"Reading relevant pages..."},"pageLinter":{"disabled":"The AI Page Linter has been disabled for this project."},"pageNotFound":{"heading":"Page Not Found","metaTitle":"404 Not Found"},"pageThumbs":{"no":"No","placeHolder":"Leave an optional comment…","prompt":"Did this page help you?","submit":"Vote","thankYou":"Thanks for voting!","yes":"Yes"},"poweredBy":"Powered by","recipes":{"inThisRecipe":"In this Recipe","openRecipe":"Open Recipe","step_one":"{{count}} step","step_other":"{{count}} steps"},"reference":{"callback":"Callback","clearExample":"Clear Example","clearResponse":"Clear Response","data":"Data","example":"Example","examplePrompt":"Choose an example","examplePromptOr":"Or choose an example","examples":"Examples","headers":"Headers","invali
142dJSON":"Invalid JSON","inspectRequest":"Inspect Request","jsonEditorAriaLabel":"Toggle Raw JSON Editor","jsonEditorLabel":"Edit JSON Body","language":"Language","library":"Library","log":"Log","logsLoading":"Retrieving recent requests…","logsPrompt":"Make a request to see history.","logsSeeAllLabel":"See All Requests","logsStatusLabel":"Status","logsThisMonth_one":"{{count}} Request This Month","logsThisMonth_other":"{{count}} Requests This Month","logsTimeLabel":"Time","logsUserAgentLabel":"User Agent","payloadExample":"Payload Example","recentRequests":"Recent Requests","replayRequest":"Replay Request","request":"Request","requestExample":"Request Example","requestExamples":"Request Examples","requestHistoryPrompt":"Log in to see full request history","requestInstructions":"Request instructions","resetBody":"Reset","response":"Response","showDescription":"Show Description","hideDescription":"Hide Description","sdkCodeEmpty":"No SDK code available","sdkCodeError":"Error retrieving SDK code. Please try again later.","tryIt":"Try It","tryItPrompt":"Click \u003ccode>Try It!\u003c/code> to start a request and see the response here!","tryItPunctuated":"Try It!"},"search":{"arrowsToNavigate":"Use \u003ckbd>↑\u003c/kbd> \u003ckbd>↓\u003c/kbd> to navigate","askAiAbout":"Ask about \"{{query}}\"","askAiEmpty":"Ask AI","askAiSubtitle":"Find the answer using the Ask AI assistant","askAiSuggestionsTitle":"Ask AI Assistant","askFailure":"We had an issue responding, please try again later","filtersAll":"All","filtersEmpty":"No matches","filtersLabel":"Filters","filtersMore":"{{name}} +{{others}}","filtersPlaceholder":"Filter","forMore":"for more","fromTheDocs":"From the Docs","inProject":"in {{project}}","noResults":"No search results for '{{query}}'","noResultsShort":"No search results","resultsFound_one":"{{count}} search result","resultsFound_other":"{{count}} search results","resultsLabel":"Search results","placeholder":"Search","pressEnterToAskAi":"Press \u003ckbd>Enter\u003c/kbd> to ask AI","pressEnterToOpen":"Press \u003ckbd>Enter\u003c/kbd> to open","promptEmpty":"Start typing to search…","promptLoading":"Keep typing to search…","recentTitle":"Recent","removeRecent":"Remove {{label}} from recent searches","searching":"Searching…","thinking":"Thinking"},"sections":{"all":"All","apiLogs":"API Logs","changelog":"Changelog","discussions":"Discussions","guides":"Guides","graphql":"GraphQL","home":"Home","pages":"Pages","recipes":"Recipes","reference":"API Reference"},"sidebar":{"filter":"Filter","filterPages":"Filter pages","noMatchingPages":"No matching pages","search":"Search"},"superHubAgent":{"disabled":"The SuperHub Agent has been disabled for this project."},"tableOfContents":"Table of Contents","time":{"absolute":{"noPrefix":"{{time}}","noPrefixAttributed":"{{time}} by {{attribution}}","postedPrefix":"Posted {{time}}","postedPrefixAttributed":"Posted {{time}} by {{attribution}}","updatedPrefix":"Updated {{time}}","updatedPrefixAttributed":"Updated {{time}} by {{attribution}}"},"justNow":{"noPrefix":"Less than a minute ago","noPrefixAttributed":"Less than a minute ago by {{attribution}}","postedPrefix":"Posted just now","postedPrefixAttributed":"Posted just now by {{attribution}}","updatedPrefix":"Updated just now","updatedPrefixAttributed":"Updated just now by {{attribution}}"},"relative":{"noPrefix":"{{time}}","noPrefixAttributed":"{{time}} by {{attribution}}","postedPrefix":"Posted {{time}}","postedPrefixAttributed":"Posted {{time}} by {{attribution}}","updatedPrefix":"Updated {{time}}","updatedPrefixAttributed":"Updated {{time}} by {{attribution}}"}},"unableToCopy":"Unable to copy","version":{"beta":"Beta","default":"Default","deprecated":"Deprecated","hiddenLabel":"Hidden Version"},"whatsNext":"What’s Next"}}}},"is404":false,"isFramePreview":false,"isIframeSsrTransfer":false,"isStreamingSSR":false,"isDetachedProductionSite":false,"lang":"en","langFull":"Default","reqUrl":"/docs/publishing-a-geofeed","version":{"_id":"624df7913f2c7b009696e5a1","version":"1","version_clean":"1.0.0","codename":"","is_stable":true,"is_beta":false,"is_hidden":false,"is_deprecated":false,"categories":["624df7913f2c7b009696e5a3","624df7913f2c7b009696e5a3","624df7913f2c7b009696e5a9","62801c4125987d00553e9fd5","62801c48594dad001c108c15","62801c5d8f701a003766f3e8","62801c614778e30345f62
142cb2","628022eeda7c3a00a01e3b3e","62811b1a1938d500350d2208","6376bf60127d99000317446a"],"project":"624df78f3f2c7b009696e59b","releaseDate":"2022-04-06T20:26:57.652Z","createdAt":"2022-04-06T20:26:57.652Z","__v":2,"apiRegistries":[{"filename":"ipdata.json","uuid":"1ott3nl3f5jm5d"}],"pdfStatus":"","source":"readme","updatedAt":"2025-11-11T22:56:45.046Z"},"gitVersion":{"ai_translation":{"status":null,"started_at":null,"completed_at":null},"base":null,"display_name":null,"i18n":{"lang":null,"parsed_version":null},"name":"1","release_stage":"release","source":"readme","state":"current","updated_at":"2026-07-02T20:07:36.000Z","uri":"/branches/1","privacy":{"view":"default"}},"versions":{"total":1,"data":[{"ai_translation":{"status":null,"started_at":null,"completed_at":null},"base":null,"display_name":null,"i18n":{"lang":null,"parsed_version":null},"name":"1","release_stage":"release","source":"readme","state":"current","updated_at":"2026-07-02T20:07:36.341Z","uri":"/branches/1","privacy":{"view":"default"}}],"type":"version"},"sidebarStatus":{"changelog":false,"custom_pages":false,"discuss":false,"guides":true,"recipes":false,"reference":true}}</script>
142</div><div id="hub-container"><div class="hub-container"><div state-container ng-attr-id="{{state.current().root !== 'docs' &amp;&amp; 'react-app-content-container'}}"><div id="replace-view" ng-non-bindable></div></div></div></div>
142<script>var is_hub = true;
143var is_hub2 = true;
144var is_hub_edit = true;
145</script>
145<div id="ssr-end">
145<script id="__LOADABLE_REQUIRED_CHUNKS__" type="application/json">[2852,4863,4011,6269,444,4148,1456,3307,7137,9977,6146,441,8836,5446,1347,1306,2966,8813,8444,7358,6383,9127,8719,1924,2712,779,97,1297,2985,6212,4818,1425,5798]</script>
145<script id="__LOADABLE_REQUIRED_CHUNKS___ext" type="application/json">{"namedChunks":["routes-SuperHub","Containers-EndUserContainer","Header","routes-SuperHub-Routes","Doc","ConnectMetadata","RMDXISH","components-AIDropdown","Footer"]}</script>
vendor: 1 bytes, line 145
145
146<script async data-chunk="main" src="https://cdn.readme.io/public/hub/web/main.4e50b24c7f06c6af8cb6.js"></script>
vendor: 1 bytes, line 146
146
147<script async data-chunk="routes-SuperHub" src="https://cdn.readme.io/public/hub/web/routes-SuperHub.8ec58d43360ea892f16f.js"></script>
vendor: 1 bytes, line 147
147
148<script async data-chunk="Containers-EndUserContainer" src="https://cdn.readme.io/public/hub/web/Containers-EndUserContainer.ac7db409f2472bbd2cd5.js"></script>
vendor: 1 bytes, line 148
148
149<script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/4011.98c6655a4c5d99e73da8.js"></script>
vendor: 1 bytes, line 149
149
150<script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/6269.156e27ce440c3a7cc1e9.js"></script>
vendor: 1 bytes, line 150
150
151<script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/444.f4f32c5edf66b173ef40.js"></script>
vendor: 1 bytes, line 151
151
152<script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/4148.e1845a9749012b95cd9e.js"></script>
vendor: 1 bytes, line 152
152
153<script async data-chunk="Header" src="https://cdn.readme.io/public/hub/web/Header.772b278c407ec7e69244.js"></script>
vendor: 1 bytes, line 153
153
154<script async data-chunk="routes-SuperHub-Routes" src="https://cdn.readme.io/public/hub/web/routes-SuperHub-Routes.fd8a1380ae3da411e4dd.js"></script>
vendor: 1 bytes, line 154
154
155<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/7137.6d393781d59245222014.js"></script>
vendor: 1 bytes, line 155
155
156<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/9977.a933c2a0ee96169ffef7.js"></script>
vendor: 1 bytes, line 156
156
157<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/6146.e0750bc6839fd326854d.js"></script>
vendor: 1 bytes, line 157
157
158<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/441.0bca8969b4854384884a.js"></script>
vendor: 1 bytes, line 158
158
159<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/8836.278c0fa83edd766823b0.js"></script>
vendor: 1 bytes, line 159
159
160<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/5446.66a863132dae0648c54c.js"></script>
vendor: 1 bytes, line 160
160
161<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/1347.6265ddeff9b9202723b8.js"></script>
vendor: 1 bytes, line 161
161
162<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/1306.50782c5e797f388d05de.js"></script>
vendor: 1 bytes, line 162
162
163<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/2966.05dc26770a0fac8b9528.js"></script>
vendor: 1 bytes, line 163
163
164<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/8813.497a2c9bf6a604146c74.js"></script>
vendor: 1 bytes, line 164
164
165<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/8444.3f94ebed77edcadbdcc7.js"></script>
vendor: 1 bytes, line 165
165
166<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/7358.44455c95287022a10b96.js"></script>
vendor: 1 bytes, line 166
166
167<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/6383.4646e3d98ed35969c597.js"></script>
vendor: 1 bytes, line 167
167
168<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/9127.29da8b9a2439909c7bbe.js"></script>
vendor: 1 bytes, line 168
168
169<script async data-chunk="Doc" src="https://cdn.readme.io/public/hub/web/Doc.d64ccc4a89ab53c86e70.js"></script>
vendor: 1 bytes, line 169
169
170<script async data-chunk="ConnectMetadata" src="https://cdn.readme.io/public/hub/web/ConnectMetadata.8e41ab6b4d0ad2a555e4.js"></script>
vendor: 1 bytes, line 170
170
171<script async data-chunk="RMDXISH" src="https://cdn.readme.io/public/hub/web/2712.833c6d420da7e5c75746.js"></script>
vendor: 1 bytes, line 171
171
172<script async data-chunk="RMDXISH" src="https://cdn.readme.io/public/hub/web/779.787e23290115569e9f85.js"></script>
vendor: 1 bytes, line 172
172
173<script async data-chunk="RMDXISH" src="https://cdn.readme.io/public/hub/web/97.0fd36ce7b76243521f50.js"></script>
vendor: 1 bytes, line 173
173
174<script async data-chunk="RMDXISH" src="https://cdn.readme.io/public/hub/web/1297.182c1003775163a16ebe.js"></script>
vendor: 1 bytes, line 174
174
175<script async data-chunk="RMDXISH" src="https://cdn.readme.io/public/hub/web/2985.652001a1e688fad77fc3.js"></script>
vendor: 1 bytes, line 175
175
176<script async data-chunk="RMDXISH" src="https://cdn.readme.io/public/hub/web/RMDXISH.0472c9795ee88f1a2788.js"></script>
vendor: 1 bytes, line 176
176
177<script async data-chunk="components-AIDropdown" src="https://cdn.readme.io/public/hub/web/4818.840c4c8b487a740167cc.js"></script>
vendor: 1 bytes, line 177
177
178<script async data-chunk="components-AIDropdown" src="https://cdn.readme.io/public/hub/web/components-AIDropdown.88def46aeefbfb1f9434.js"></script>
vendor: 1 bytes, line 178
178
179<script async data-chunk="Footer" src="https://cdn.readme.io/public/hub/web/Footer.72b0e0d83d6f8b281611.js"></script>
179</div>
179<script>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
180(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
181m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
182})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
183</script>
183<script>ga('create', 'UA-108010081-1', 'auto', {'name': 'custom'});
184$(window).on('pageLoad', function(e, state){
185  ga('custom.send', 'pageview', window.location.pathname);
186});
187</script>
187<script id="hub-me" type="application/json" data-json="{&quot;loggedIn&quot;:false,&quot;search&quot;:{&quot;app&quot;:&quot;&quot;,&quot;token&quot;:&quot;&quot;,&quot;filters&quot;:&quot;&quot;,&quot;metaData&quot;:[{&quot;modules&quot;:{&quot;landing&quot;:false,&quot;docs&quot;:true,&quot;examples&quot;:true,&quot;reference&quot;:true,&quot;graphql&quot;:false,&quot;changelog&quot;:false,&quot;discuss&quot;:false,&quot;suggested_edits&quot;:false,&quot;logs&quot;:false,&quot;custompages&quot;:false,&quot;tutorials&quot;:false},&quot;id&quot;:&quot;624df78f3f2c7b009696e59b&quot;,&quot;name&quot;:&quot;ipdata&quot;,&quot;subdomain&quot;:&quot;ipdata&quot;,&quot;subpath&quot;:&quot;&quot;,&quot;nav_names&quot;:{&quot;docs&quot;:&quot;Documentation&quot;,&quot;reference&quot;:&quot;&quot;,&quot;changelog&quot;:&quot;&quot;,&quot;discuss&quot;:&quot;&quot;,&quot;tutorials&quot;:&quot;&quot;,&quot;recipes&quot;:&quot;&quot;}}]},&quot;intercom&quot;:{&quot;intercom&quot;:&quot;ifogoroa&quot;,&quot;intercom_secure_emailonly&quot;:false}}"></script>
187<script id="readme-data-baseUrl" type="application/json"></script>
187<script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a402d9d09c4486fc',t:'MTc5MDI2NDA0MQ=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script>
187</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.