POST /v1/extract

Extract to a schema

Supply a schema and get back JSON in that shape. The engine handles DOM traversal and structural mapping, so you are not writing per-site selectors or repairing them when a target changes its markup.

Request

curl -X POST https://api.datamint.xyz/v1/extract \
  -H "Authorization: Bearer mint_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/item/123",
    "schema": "ecommerce_item"
  }'

The difference from /v1/mint is what schema is allowed to be, and that the extraction pass is always applied.

Parameters

urlstringrequired

The page to fetch. An absolute http or https URL.

schemastring | objectrequired

Either a registered schema name such as ecommerce_item, or an inline JSON Schema object. A registered name resolves to a mapping already maintained for that shape; an inline schema is used as given.

jsboolean

Render in a headless browser first, for client-rendered pages.

stealthboolean

Route through residential proxies with fingerprint mutation.

Unlike /v1/mint, schema here is required: producing typed JSON is the entire purpose of the endpoint. Omitting it is a 400, not a request that falls back to Markdown.

Cost

The schema pass is always applied and is always additive, so this endpoint costs 2 credits more than the equivalent fetch on /v1/mint: 3 credits for a static fetch, 7 for a dynamic render, 17 for stealth armor.

Choosing between a name and an inline schema

Use a registered name when one matches your target. These map well to shapes that are the same across many sites (a product listing, an article, a job posting) and they are maintained as the targets change, which is the point of not writing selectors yourself.

Use an inline JSON Schema when your shape is specific to your own pipeline and no registered name fits.

Registered Canonical Schemas

"ecommerce_item"

E-commerce product data across retail and marketplace platforms.

Fields: product_name, price, currency, in_stock, description, sku, brand, images, rating, review_count

"article"

News, blog posts, essays, and editorial journalism.

Fields: headline, author, date_published, summary, content_markdown, lead_image, tags

"job_posting"

Employment postings and career board listings.

Fields: title, company_name, location, remote_policy, employment_type, salary_range, requirements, posted_at

"company_profile"

About pages, corporate directories, and startup registries.

Fields: name, domain, industry, headquarters, founded_year, employee_count, description, social_profiles

"real_estate_listing"

Property listings for rent or purchase.

Fields: address, price, property_type, bedrooms, bathrooms, square_feet, description, amenities, mls_id

"faq"

Extracted question-and-answer pairs across help centers and landing pages.

Fields: questions: Array<{ question: string, answer: string }>

Errors

400 if schema is missing or is neither a string nor an object. The rest are shared across the API. See Errors.

Need volume pricing or a custom parser?