Show HN: Is Hormuz open yet?
A personal project to answer a specific geopolitical/logistical question, highlighting challenges in accessing real-time, reliable shipping data due to API costs and data lag.
View Origin LinkProduct Positioning & Context
AI Executive Synthesis
A personal project to answer a specific geopolitical/logistical question, highlighting challenges in accessing real-time, reliable shipping data due to API costs and data lag.
This submission, while a personal project, exposes a significant B2B data acquisition challenge: the high cost and latency of real-time maritime intelligence. The manual data collection workaround and the consideration of an 'AI agent' for automated scraping highlight a common pain point for businesses requiring timely, accurate geopolitical or logistical data. The 4-day lag in official sources further underscores the market gap for immediate, actionable insights. This illustrates a broader trend where AI agents are being considered for data aggregation and monitoring tasks where traditional API access is cost-prohibitive or insufficient, indicating a potential market for specialized data intelligence services that bypass traditional data vendor limitations.
I built this because I was interested in the data. Didn't fully get it to what I wanted, but thought I'd share it nonetheless. Maybe someone has better data sources they could share!Turns out live ship tracking APIs are expensive so I manually just copied the json from https://www.marinetraffic.com/en/ais/home/centerx:57.4/cente... I'll probably have an ai agent do the same thing on some cron interval, if this gets any fanfare.To actually know if the port is open without live ship tracking I found https://portwatch.imf.org/pages/cb5856222a5b4105adc6ee7e880a... which was perfect, except it has 4 day lag!I also thought of adding news feed parsing or prediction market data to get a more definitive answer on if it's open right when you load it, but I spent a few hours and am gonna move on for now.
Community Voice & Feedback
That's really cool. I tried to blog about it in the early days of the war and tried to show it in realtime as well. As you discovered, it's really expensive to get ship tracking APIs. So I also did something similar, where I took the JSON from Marine Traffic and mapped it onto a Mapbox map. I did a very rudimentary-ish job — I think what you created is much more refined.
Hello OP, I think using an ai agent to fetch the JSON is a bit of an overkillHere is a node.js script for you which will fetch the data and save it to the file: import fs from 'fs'
import puppeteer from 'puppeteer-extra'
import StealthPlugin from 'puppeteer-extra-plugin-stealth'
puppeteer.use(StealthPlugin())
const browser = await puppeteer.launch();
const page = await browser.newPage();
async function fetchCoords(x, y, z = 8, station = 0) {
await page.goto(`https://www.marinetraffic.com/getData/get_data_json_4/z:${z}/X:${x}/Y:${y}/station:${station}`);
const jsonRaw = await page.evaluate(() => document.body.innerText);
const json = JSON.parse(jsonRaw)
return json
}
const data8353 = await fetchCoords(83, 53)
const data8453 = await fetchCoords(84, 53)
const data8354 = await fetchCoords(83, 54)
const data8454 = await fetchCoords(84, 54)
const fullData = { ...data8353, ...data8453, ...data8354, ...data8454 }
fs.writeFileSync('data.json', JSON.stringify(fullData, null, 2))
console.log('done!')
process.exit(0)
Just like this, no need to spend a cent on expensive APIs or tokens
import puppeteer from 'puppeteer-extra'
import StealthPlugin from 'puppeteer-extra-plugin-stealth'
puppeteer.use(StealthPlugin())
const browser = await puppeteer.launch();
const page = await browser.newPage();
async function fetchCoords(x, y, z = 8, station = 0) {
await page.goto(`https://www.marinetraffic.com/getData/get_data_json_4/z:${z}/X:${x}/Y:${y}/station:${station}`);
const jsonRaw = await page.evaluate(() => document.body.innerText);
const json = JSON.parse(jsonRaw)
return json
}
const data8353 = await fetchCoords(83, 53)
const data8453 = await fetchCoords(84, 53)
const data8354 = await fetchCoords(83, 54)
const data8454 = await fetchCoords(84, 54)
const fullData = { ...data8353, ...data8453, ...data8354, ...data8454 }
fs.writeFileSync('data.json', JSON.stringify(fullData, null, 2))
console.log('done!')
process.exit(0)
Just like this, no need to spend a cent on expensive APIs or tokens
This is a nice overview, but please remove the PolyMarket indicator. It is an obscene prediction mechanism as it creates horrible financial incentives to a war situation. Its degenerate effects have been featured here before. [1]Let's not condone "measurements" that are effectively ways for people to gain money on important political decisions, affecting the lives of many people.(1) https://news.ycombinator.com/item?id=47397822
According to the Financial Times (1), the straight is "open" but Iran is extorting fees for passing ships.> "Iran will demand that shipping companies pay tolls in cryptocurrency for oil tankers passing through the Strait of Hormuz, as it seeks to retain control over passage through the key waterway during the two-week ceasefire."If they really will start doing so for all shipping, that would be odd since the straight itself is in Oman's territorial waters. Even so, the UNCLOS convention (2) requires free transit:> Article 44
> Duties of States bordering straits
>
> States bordering straits shall not hamper transit passage and shall give appropriate publicity to any danger to navigation or overflight within or over the strait of which they have knowledge. There shall be no suspension of transit passage.It would be unprecedented and unlawful, but I guess previous actions of Israel, the US and Iran have shown our world is beyond adhering to laws and agreements now.(1) https://www.ft.com/content/02aefac4-ea62-48db-9326-c0da373b1...
(2) United Nations Convention on Law of the Sea: https://www.un.org/depts/los/convention_agreements/texts/unc...
> Duties of States bordering straits
>
> States bordering straits shall not hamper transit passage and shall give appropriate publicity to any danger to navigation or overflight within or over the strait of which they have knowledge. There shall be no suspension of transit passage.It would be unprecedented and unlawful, but I guess previous actions of Israel, the US and Iran have shown our world is beyond adhering to laws and agreements now.(1) https://www.ft.com/content/02aefac4-ea62-48db-9326-c0da373b1...
(2) United Nations Convention on Law of the Sea: https://www.un.org/depts/los/convention_agreements/texts/unc...
OP, DM me and I'll get you a persistent key for this data. Not from MarineTraffic
I believe NASA / EU provide daily satellite imagery for free (which is of relatively high quality too). I wonder if there's a way to take that data, and training some kind of image recognition model that figures out "movement" or something to the same end? Would be cool to see
The data being ~4 days delayed does kind of make this less useful. It is a nice concept and cool to see the historical data though. Just think the domain and the large "NO" doesn't really fit with the lack of current data.
I work for a consultancy that does vessel tracking as one of its main products, and yeah it's expensive! afaik they have remote teams with sensors at key points and a bunch of people using AI/software to manage things like GPS spoofing. So it's all pretty guarded proprietary stuff.Great bit of topical datavis here.
Maps can be so misleading. It looks like a dredging operation in Omani waters could alleviate this, if we'd started decades ago.Moving to a topographic view, it becomes clear the neck of land at "two seas view" is narrow, but tall. It would literally be moving a mountain.Panamax and suezmax boats are smaller than ULCC supertankers.Ferdinand De Lesseps time has passed. This would be ruinously expensive. Better to negotiate with rational intent.
Very cool! I love one off intresting sites like this. Thanks for building it and talking a little bit about where the data comes from etc.On the note of Ai agent getting the data for you, could you not just build a chrome extention that intercepts/read the api response and then uploads it to whatever ingest endpoint you have? You could probably just call their api end points they use on the page as well but not sure what protections they have so might be a bit tricky. A custom chrome extention could do it though if they have protections.
Related Early-Stage Discoveries
Discovery Source
Hacker News Aggregated via automated community intelligence tracking.
Tech Stack Dependencies
No direct open-source NPM package mentions detected in the product documentation.
Media Tractions & Mentions
No mainstream media stories specifically mentioning this product name have been intercepted yet.
Deep Research & Science
No direct peer-reviewed scientific literature matched with this product's architecture.
SaaS Metrics