๐Ÿ‡ฎ๐Ÿ‡ฉ Built for Indonesian Documents

Indonesian Document
OCR API

Extract structured data from KTP, NPWP, SIM in seconds.
Developer-friendly. Self-serve. Affordable.

<2s Avg Response
99.2% Accuracy
4 Document Types

How It Works

Three simple steps to extract structured data from any supported document.

1
๐Ÿ“ค

Upload Image

Send a photo or scan of KTP, NPWP, SIM, or KK via our REST API endpoint.

2
๐Ÿค–

AI Processes

Our OCR engine detects document type, extracts text, and structures the data automatically.

3
๐Ÿ“‹

Get JSON Response

Receive clean, structured JSON with all extracted fields โ€” ready to use in your app.

Supported Documents

Extract structured data from all major Indonesian identity documents.

๐Ÿชช

KTP

Kartu Tanda Penduduk

14 fields extracted
๐Ÿงพ

NPWP

Nomor Pokok Wajib Pajak

8 fields extracted
๐Ÿš—

SIM

Surat Izin Mengemudi

10 fields extracted
๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ

KK

Kartu Keluarga

8+ fields extracted

Try It Now

Upload a document image and see the API response in real-time.

POST https://ocr-proxy-eta.vercel.app/api/ocr?type=ktp
๐Ÿ“Œ Tips for best results:
โœ“ Use a flat scan or screenshot (not a handheld photo)
โœ“ Ensure all text is clearly visible, no glare or shadows
โœ“ Document should fill most of the image
โœ“ Minimum resolution: 800px width
โœ— Avoid: blurry photos, holograms covering text, fingers blocking text

API Documentation

Everything you need to integrate the OCR API into your application.

Base URL
https://ocr-proxy-eta.vercel.app
Authentication
X-API-Key: YOUR_API_KEY (header) or ?key=YOUR_API_KEY (query) Get your free key below
POST /api/ocr?type={document_type}

Extract structured data from an Indonesian document image.

Query Parameters

FieldTypeRequiredDescription
type string yes Document type: ktp, npwp, sim, kk

Request Headers

HeaderValueRequiredDescription
X-API-Key {api_key} yes Your API key
Content-Type multipart/form-data yes File upload

Request Body (multipart/form-data)

FieldTypeRequiredDescription
image file yes Document image (JPG, PNG). Max 10MB.

Response (200 โ€” Success)

{
  "status": "success",
  "document_type": "ktp",
  "data": {
    "nik": "3201234567890001",
    "nama": "JOHN DOE",
    "tempat_lahir": "JAKARTA",
    "tanggal_lahir": "1990-05-15",
    "jenis_kelamin": "LAKI-LAKI",
    "alamat": "JL. MERDEKA NO. 10",
    "rt_rw": "001/002",
    "kelurahan": "GAMBIR",
    "kecamatan": "GAMBIR",
    "agama": "ISLAM",
    "status_perkawinan": "BELUM KAWIN",
    "pekerjaan": "KARYAWAN SWASTA",
    "kewarganegaraan": "WNI",
    "berlaku_hingga": "SEUMUR HIDUP"
  },
  "confidence": 0.97,
  "processing_time_ms": 1240
}

Response Fields

FieldTypeDescription
status string "success" or "error"
document_type string Detected document type
data object Extracted fields (varies by document type)
confidence number OCR confidence score (0-1)
processing_time_ms number Processing time in milliseconds

Error Responses

// 401 โ€” Unauthorized
{ "error": "Invalid API key" }

// 429 โ€” Rate Limited
{ "error": "Daily limit reached (6/6). Upgrade your plan." }

// 400 โ€” Bad Request
{ "error": "No image file provided" }

Get API Key

Get a free API key for 6 requests/day. No credit card required.

Usage

  • Add header: X-API-Key: your_key
  • Or query param: ?key=your_key

Limits

  • Playground (no key): 3 req/day
  • Free tier (with key): 6 req/day
  • Paid plans: coming soon

Pricing

Start free. Pay only when you need more.

Free
$0
  • 6 requests/day
  • All document types
Starter
๐Ÿš€ Launch Price
$39$19/mo
  • 100 requests/day
  • Webhook notifications
Business
๐Ÿš€ Launch Price
$299$149/mo
  • 3,000 requests/day
  • Custom SLA
Pay as You Go

No monthly commitment. Pay only for what you use. All features included.