New The MCP server is live: all 45 APIs in Claude, Cursor or any MCP client. Connect your agent

Extract image metadata, camera details and GPS coordinates at the edge

EXIF API

The EXIF API reads the embedded EXIF, TIFF, IFD0 and GPS metadata from JPEG, PNG, HEIC, TIFF and WebP images. Point it at an image URL or POST the raw bytes and receive a clean, predictable JSON envelope with camera make and model, lens, capturing software, ISO, aperture, shutter speed, focal length, flash status, pixel dimensions and the original capture timestamp.

Built on Cloudflare Workers, the API runs at the edge for low-latency responses worldwide and never stores your images — bytes are parsed in-memory and discarded. URL fetches follow redirects, enforce a 15MB size cap and include a built-in SSRF guard that always blocks localhost and private-network targets.

Free tier included, no credit card required. One key works across every API.

At a glance

EXIF API

1 credit / call
Free calls / month
1,000
Formats
5+
Response Time
<150ms
Max Image Size
15MB
Get your free API key

1,000 free calls on the free plan

Key features

  • Extract EXIF, TIFF, IFD0 and GPS metadata in one call
  • Two input modes: image URL or raw binary upload
  • Decimal GPS latitude, longitude and altitude when present
  • Normalized top-level fields plus a full raw tag dump
  • Supports JPEG, PNG, HEIC, TIFF and WebP images
  • Built-in SSRF guard blocks localhost and private networks
  • Images parsed in-memory and never stored

Built for

  • Photo-management and gallery applications
  • Content moderation and image provenance pipelines
  • Real-estate and e-commerce listing tools
  • Journalism and OSINT verification workflows
  • Metadata strip-checks before publishing
  • Geotagging and map-based photo organization
  • Digital forensics and authenticity analysis
  • Camera and lens analytics dashboards

MCP · for your agent

Hand the EXIF API to your agent

Connect Claude, Cursor or any MCP client once, then ask in plain words. Your agent finds this API, reads its docs and makes the call: 1 credit per call, the same as REST, from your team's balance.

Strip-check photos before publishing

“Before we publish these 20 product photos, check which ones still carry GPS location data.”

list_apis · get_api_docsfree

api_request GET /exif/v1/extract?url=https://cdn.example.com/products/desk-lamp-01.jpg 1 cr

GPS presence, camera and capture date per photo, with the files to scrub listed.

Verify a reader-submitted photo

“A reader sent us this storm photo. Do the camera, capture time and software match what they told us?”

list_apis · get_api_docsfree

api_request GET /exif/v1/extract?url=https://uploads.example.com/tips/storm-0412.jpg 1 cr

Camera make and model, capture time and editing software, with any mismatches noted.

Check listing photo quality

“Check the photos on our 42 Elm St listing: flag any under 1600px wide or saved by editing software.”

list_apis · get_api_docsfree

api_request POST /exif/v1/extract 1 cr

Dimensions and software tag for each photo, with undersized or edited images flagged.

$ claude mcp add --transport http apicodex https://mcp.apicodex.io

Illustrative asks; the calls and prices are real. Claude, Cursor, VS Code and Windsurf setup: mcp.apicodex.io

Try it

Build the request for your data

Edit the parameters below and see the exact request and curl command you'd send. No key required to preview.

GET /exif/v1/extract
Open in Playground

Parameters

Request · HTTP
GET /exif/v1/extract?url=https://example.com/photo.jpg&apikey=YOUR_KEY HTTP/1.1
Host: api.apicodex.io
Response · JSON 200 OK
{
"found": true,
"make": "Apple",
"model": "iPhone 13 Pro",
"lens": "iPhone 13 Pro back triple camera 5.7mm f/1.5",
"software": "16.5.1",
"datetime": "2023-07-14T18:32:07.000Z",
"orientation": 6,
"iso": 64,
"f_number": 1.5,
"exposure_time": 0.008333333333333333,
"focal_length": 5.7,
"flash": "No Flash",
"dimensions": { "width": 4032, "height": 3024 },
"gps": {
  "latitude": 37.80861111111111,
  "longitude": -122.40972222222223,
  "altitude": 12.4
}
}

Documentation

EXIF API Documentation

The EXIF API extracts EXIF, TIFF, IFD0 and GPS metadata from images supplied either as a raw binary upload or by URL. The API returns a normalized JSON envelope with consistent top-level fields (null when a tag is missing) plus a full raw object containing the complete parsed tag set for power users.

Base URL

url
https://api.apicodex.io/exif

Authentication

Authenticate every request with your API key: pass it as an ?apikey= query parameter, or send it in an X-Api-Key header.

headers
// Query parameter
GET /exif/v1/extract?url=https://example.com/photo.jpg&apikey=YOUR_KEY

// Header
{
"X-Api-Key": "YOUR_API_KEY"
}

Request and response

Illustrative values. Confirm current endpoint behavior, quotas, and data freshness in the API documentation before production use.

request · http
GET /exif/v1/extract?url=https://example.com/photo.jpg&apikey=YOUR_KEY HTTP/1.1
Host: api.apicodex.io
response · json
{
"found": true,
"make": "Apple",
"model": "iPhone 13 Pro",
"lens": "iPhone 13 Pro back triple camera 5.7mm f/1.5",
"software": "16.5.1",
"datetime": "2023-07-14T18:32:07.000Z",
"orientation": 6,
"iso": 64,
"f_number": 1.5,
"exposure_time": 0.008333333333333333,
"focal_length": 5.7,
"flash": "No Flash",
"dimensions": { "width": 4032, "height": 3024 },
"gps": {
  "latitude": 37.80861111111111,
  "longitude": -122.40972222222223,
  "altitude": 12.4
}
}

Code examples

cURL
# Extract from an image URL
curl --request GET \
  --url 'https://api.apicodex.io/exif/v1/extract?url=https://example.com/photo.jpg' \
  --header 'X-Api-Key: YOUR_API_KEY'

# Or upload raw bytes directly
curl --request POST \
  --url 'https://api.apicodex.io/exif/v1/extract' \
  --header 'X-Api-Key: YOUR_API_KEY' \
  --header 'Content-Type: application/octet-stream' \
  --data-binary @photo.jpg

Endpoints

GET /v1/extract

Extract metadata from an image URL passed via the url query parameter.

/v1/extract?url=https://example.com/photo.jpg&apikey=YOUR_KEY

POST /v1/extract

Extract metadata from a raw image body (image/* or application/octet-stream) or a JSON object { "url": "https://..." }.

/v1/extract

Query Parameters

Required parameters

  • url HTTP/HTTPS URL of the image to analyze. Required for the GET endpoint (or pass the image bytes / JSON { url } on POST).

Optional parameters

  • timeout_ms Upstream fetch timeout in milliseconds. Default 10000, maximum 20000.

Pricing

EXIF API Pricing

This API costs 1 credit per request. Credits are shared across every API on your plan.

Cost estimator

requests per month → cheapest plan that covers it

Estimate your monthly cost

Drag the slider to match your expected request volume. We'll recommend the cheapest plan that covers it.

10,000

Recommended plan

Starter

$29.99 /month

Credits used
Credits included
Cost per 1K requests
Choose Starter

Free

Free
1,000 credits · ~1,000 requests/mo · 2 rps
  • All APIs included
  • No credit card required
  • Full documentation and examples
  • MCP server for your AI agents
  • Up to 5 active API keys
Start for free

Starter

Popular
$29.99 /month
50,000 credits · ~50,000 requests/mo · 10 rps
  • All APIs included
  • Email support
  • Usage dashboard and analytics
  • MCP server for your AI agents
  • Up to 5 active API keys
Start with Starter

Pro

$99.99 /month
250,000 credits · ~250,000 requests/mo · 25 rps
  • All APIs included
  • Priority support
  • MCP server for your AI agents
  • Up to 5 active API keys
Start with Pro

Need a different plan?

Tell us about your API, volume, or support requirements.

Contact us

FAQ

Frequently asked questions

Ready to integrate EXIF?