Integrate MapFramer into your stack
Convert Google Maps short links into high-performance, coordinate-precise iframes. No Google API keys, no Google Cloud billing, just raw location power.
End-to-End Integration Roadmap
STEP 01Get Your API Key
Retrieve your unique `mf_xxxx` token from the dashboard. This identifies your project and handles rate limiting.
STEP 02Store Your Key Securely
Never use keys in client-side code. Use an environment variable like `MAPFRAMER_API_KEY` on your backend server.
STEP 03Backend Resolution
When an admin saves a map link, call our POST API. We'll resolve the short link even if it points to a dynamic coordinate pin.
STEP 04Store the Result
Save the `embedUrl` or the `iframeHtml` in your own database. Treat this resolve step as a one-time operation.
STEP 05Render Local-Speed Maps
Display the map using your stored URL. Google takes over from here—served directly from their global CDN with 0 latency.
Authentication
We use Bearer tokens for authentication. Include it in the header for secure backend calls.
Important: Calling the API from the browser will expose your token. Always implement a proxy endpoint on your backend or call it directly from your server actions.
Authorization: Bearer mf_your_token_hereResolve API
POST v1/resolveAccepts a Google Maps short link (`maps.app.goo.gl`) and returns structured location data plus a coordinate-based embed URL.
Request Body
{
"url": "https://maps.app.goo.gl/55mmCVHWZFa8MT3w8"
}Example Resolution
{
"success": true,
"data": {
"type": "place",
"query": "Calcutta Rowing Club (CRC)",
"coords": { "lat": 22.564, "lng": 88.341 }
},
"embedUrl": "https://www.google.com/maps?q=Calcutta%20Rowing%20Club%20(CRC)%2C%2022.56%2C88.34&z=17&output=embed",
"iframeHtml": "<iframe src='...' width='100%' height='100%' style='...' />",
"cached": true
}Flexible Sizing (CSS/Tailwind)
Our generated `iframeHtml` returns a production-ready embed with width: 100% and height: 100%. We include a min-height: 450px fallback.
This gives you **total functionality**: if you wrap the iframe in a parent container with a specific height, the map will fill it completely. If not, it safely defaults to a standard height.
<div className="w-full h-[600px] lg:h-[800px] overflow-hidden rounded-2xl">
<!-- MapFramer iframe fills this container perfectly -->
{iframeHtml}
</div>Caching Layers
Server-Side Cache
MapFramer caches every resolution. If multiple customers request the same link, the response is served in <50ms from our Redis layer.
Client-Side Storage
Once you resolve a link, store it in your DB. Subsequent views on your site call Google Directly—eliminating latency and cost.
Integration (React / Next.js)
// Server Component or Action
async function GetMap(link: string) {
const res = await fetch("https://mapframer.dev/api/v1/resolve", {
method: "POST",
headers: { "Authorization": `Bearer ${process.env.MF_KEY}` },
body: JSON.stringify({ url: link })
});
return res.json();
}
// Frontend Component
export function MapDisplay({ iframeHtml }) {
return (
<div className="rounded-2xl overflow-hidden h-[450px]">
<div dangerouslySetInnerHTML={{ __html: iframeHtml }} />
</div>
);
}Frequently Asked Questions
Do I need a Google Maps API Key?
No. MapFramer operates entirely independent of your Google Cloud account. You just need a MapFramer API key, and we handle the resolution and expansion engine entirely on our side.
Is there a rate limit?
Yes, depending on your tier. The Starter tier allows up to 500 requests per month. If you exceed this, the API will return a 429 status code. For unlimited needs, please contact us for the Enterprise plan.
Are the generated iframes responsive?
Yes! By default, the generated `iframeHtml` is styled with `width: 100%` and `height: 100%`, so it will perfectly adapt to whatever container you wrap it in.
Start framing today
Ready to move beyond manual embed extraction?
© 2026 MapFramer — Premium Map Tools