PROVENANCEAlways visible Source + version + freshness
Know the source. Understand the answer.{ } REST API
YOUR CONNECTION
My IP lookup.
See your public IP address and its approximate location.
Press “Look up my IP” to pull your response. Nothing is requested automatically.
Uses one of your public website lookups. IP location is an estimate, not a precise physical address.
EVERY ANSWER HAS A SOURCE.
07tracked data integrations
v4+v6IPv4 and IPv6 address support
◷Independent source refreshes
{ }One predictable REST API
01 / EXPLORE THE INTELLIGENCE
Look up another IP.
See the estimated location, network, and the data behind each result.
Example mode
10 sample lookups left today · Resets at 00:00 UTC
ILLUSTRATIVE DATA
🇺🇸
APPROXIMATE LOCATION
Mountain View, United States
↗
IP address8.8.8.8
RegionCalifornia
Country codeUS
Time zoneAmerica/Los_Angeles
NetworkAS15169 · Google LLC
IP versionIPv4
ⓘ Sample response for exploration. IP locations are approximate, not GPS coordinates.
◎ Illustrative location
This preview uses example responses and a browser-local counter. Production lookups require the PHP service, approved datasets, and server-enforced quotas.
02 / GO BEYOND THE COORDINATES
More than a pin on a map.
Build for where people are. And understand the data that gets you there.
IP geolocation is an estimate. Country results are generally more stable than city results. Mobile networks, VPNs, and routing changes can affect location. ORIGOOO shows provenance and uncertainty rather than a numerical accuracy guarantee.
Are all seven integrations independent?
No. Distributions may mirror upstream records. ORIGOOO tracks lineage so mirrored datasets do not count as independent votes. The registry shows each integration’s role and readiness.
How do the free allowances work?
The public website allowance is 10 lookup actions per visitor per UTC day. Registered Free accounts receive 1,000 API credits per month. Standard lookups cost one credit and all-source comparisons cost two. The preview uses sample data only.
Can I use this to block access by country?
Country policies must be enforced on your server. A frontend widget alone does not secure content. SDK policies should define trusted proxies, caching, and how unknown locations and service outages are handled.
DEVELOPER WIDGETS
Language preselector
Return a country-ranked language suggestion to your own localization function. The decision element stays invisible.
Working controls. Ready to try. Examples on orig.ooo share one IP-country lookup. Language and country decision elements return data and callbacks; their output panels below are demonstration UI. Connecting to the lookup service…CDN URLs & setup instructions →
Where this fits
Choose an initial translation bundle
Rank country-relevant languages
Prepare a locale variable before rendering content
Resolve a country into a language code and a ranked list of its languages. Feed that result into your own localization logic.
LIVE EXAMPLE
Initial locale · Localized content · Language suggestions
Selected language codeWaiting for country
Country-ranked options appear here.
These buttons simulate a country for this example.
This component renders no control. The demo shows its output. Country language prevalence is a suggestion; preserve the visitor’s saved preference.
HTML
<script type="module" src="https://orig.ooo/cdn/widgets/1.4.7/widgets.js"></script>
<origooo-language-preselector id="locale"
auto-detect key="og_pub_2b113c8b0d21011497e7db566da928dd4c23d4404b4bbc5e"
endpoint="https://orig.ooo/v1/ip/me"
fallback-language="en">
</origooo-language-preselector>
<p id="locale-preview"></p>
<script>
const locale = document.querySelector("#locale");
let selectedLanguage;
locale.onResolve = result => {
selectedLanguage = result.language;
document.querySelector("#locale-preview").textContent =
"Suggested language: " + (selectedLanguage || "unknown");
// Call your localization function here.
// result.languages is ranked for result.country.
};
// locale.result, locale.dataset.language,
// locale.dataset.languages are also available.
</script>
Load the module once. The hosted module loads its dependencies automatically. Self-host the complete kit.
AUTOMATIC IP DETECTION
Detected from your actual IP.
Request an approximate country from an active dataset. Existing manual choices stay in place. On orig.ooo this uses one lookup through the site’s origin-restricted publishable widget key.
No IP request made.
Estimated countryNot checked
Country and language suggestions are approximate. Saved visitor preferences take priority.
Use the decision in your application
This element returns data. Your own JavaScript controls the visible interface. Subscribe to onResolve, listen for events or read result and data attributes.
const element = document.getElementById("locale");
let decisionResult;
element.onResolve = result => {
decisionResult = result;
// Update your own HTML or call your application function.
};
// element.result and element.dataset expose the output too.