Documentation Index
Fetch the complete documentation index at: https://gmlp.kdco.dev/llms.txt
Use this file to discover all available pages before exploring further.
Basic unfurling
import { unfurlGoogleMapsUrl } from "google-maps-link-parser";
const redirectSteps = [
{
status: 302,
location: "https://www.google.com/maps/@24.7136,46.6753,15z",
},
{ status: 200 },
];
let redirectIndex = 0;
const mockFetch = async () => {
const step = redirectSteps[redirectIndex++];
if (!step) {
throw new Error("Unexpected fetch call");
}
return new Response("", {
status: step.status,
headers: step.location ? { Location: step.location } : {},
});
};
const result = await unfurlGoogleMapsUrl("https://maps.app.goo.gl/abc123?g_st=ic", {
fetch: mockFetch,
raw: { enabled: true },
});
console.log(result.resolution.status); // => "resolved"
console.log(result.resolution.resolvedUrl); // => "https://www.google.com/maps/@24.7136,46.6753,15z"
Multi-hop behavior
Some short links resolve through multiple intermediate Google URLs before they become useful. The library preserves that chain when raw artifacts are enabled.
console.log(result.raw?.redirects?.hops);
Output
[
{
requestUrl: "https://maps.app.goo.gl/abc123",
responseStatus: 302,
locationHeader: "https://www.google.com/maps/@24.7136,46.6753,15z"
},
{
requestUrl: "https://www.google.com/maps/@24.7136,46.6753,15z",
responseStatus: 200,
locationHeader: null
}
]
Dead tokens and 404 outcomes
Dead short links do not crash the parser.
Instead, you get:
status: "ok"
resolution.status: "dead-end"
- a warning diagnostic
- the final HTTP status when available
That keeps downstream code predictable while still surfacing failure clearly.