Scan Image Text URL
Metered / request/v1/scan-image-text-urlExtract text from a public camera trap image URL and return structured fields when they can be detected.
Try in playgroundParameters
Required
Public image URL. Fetched image limit is 10 MB.
Request notes
Send JSON only. Private IPs and internal targets are blocked. Fetched images must be 10 MB or smaller.
Response fields
Required. Full raw text extracted from the image before structured parsing.
Optional. Detected and normalised date from the image overlay.
Optional. Detected and normalised time from the image overlay.
Optional. Primary detected temperature value.
Optional. Secondary detected temperature in alternate unit when available.
Optional. Detected relative humidity.
Optional. Detected barometric pressure and its unit.
Optional. Detected moon phase (normalised snake_case label).
Optional. Detected camera brand based on known camera patterns.
Optional. Detected camera model based on known camera patterns.
Optional. Detected burst position such as frame 2 of 3.
Status codes
Notes
- Fields not found during extraction are omitted from the response.
- Optimised for camera trap overlays. For other text, use
raw_text. - Public API keys can still test OCR inside the docs playground only; that exception does not apply to direct
/v1calls.
Examples
const response = await fetch('https://api.animaldetect.com/v1/scan-image-text-url', {
method: 'POST',
headers: {
Authorization: 'Bearer ' + process.env.ANIMAL_DETECT_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: 'https://example.com/camera-trap.jpg',
}),
})
const data = await response.json(){
"raw_text": "BUSHNELL 2026-02-12 09:17 PM 59F",
"date": "2026-02-12",
"time": "21:17:00",
"temperature": { "value": 59, "unit": "F" },
"camera_brand": "bushnell"
}