Scan Image Text URL
Consumes creditsPOST /api/v1/scan-image-text-urlUse this endpoint to extract camera-trap style text metadata from a public image URL without uploading a file.
Try in PlaygroundRequired Parameters
url(string) Public image URL.
Request body is JSON only. Private IPs and internal targets are blocked by URL security checks.
All Possible Response Fields
raw_text(string) Required. Full raw text extracted from the image before structured parsing.date(string (YYYY-MM-DD)) Optional. Detected and normalized date from the image overlay.time(string (HH:MM:SS, 24h)) Optional. Detected and normalized time from the image overlay.temperature({ value: number, unit: "C" | "F" }) Optional. Primary detected temperature value.temperature_alt({ value: number, unit: "C" | "F" }) Optional. Secondary detected temperature in alternate unit when available.humidity({ value: number, unit: "%" }) Optional. Detected relative humidity.pressure({ value: number, unit: string }) Optional. Detected barometric pressure and its unit.moon_phase(string) Optional. Detected moon phase (normalized snake_case label).camera_brand(string) Optional. Detected camera brand based on known camera patterns.camera_model(string) Optional. Detected camera model based on known camera patterns.burst_sequence({ current: number, total: number }) Optional. Detected burst position such as frame 2 of 3.
Status Codes
200OCR and metadata extraction completed.
400Validation error or blocked URL target.
401Invalid, missing, or revoked API key.
402Quota exceeded.
429Rate limit exceeded.
500Internal or upstream OCR service error.
- Fields not found during extraction are omitted from the response.
- Parser is optimized for camera-trap overlays (date/time/environment/camera/burst). For arbitrary text, use `raw_text`.
Node.js / Express
const response = await fetch('https://www.animaldetect.com/api/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()Example 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"
}