Page Quarry
Pricing
from $15.00 / 1,000 results
Pricing
from $15.00 / 1,000 results
Rating
0.0
(0)
Developer
Result Quarry
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Turn ordinary public webpages into structured JSON with natural-language instructions and an optional JSON Schema.
Page Quarry fetches each URL, reads the content present in its initial HTML, extracts the requested facts with Gemini 3.5 Flash-Lite, validates the response, and writes one auditable record per URL to the run's default Dataset.
What you can extract
Use Page Quarry with public, server-rendered pages such as:
- articles and documentation;
- product or detail pages;
- tables;
- lists and card layouts;
- long text pages;
- pages with mildly malformed HTML or legacy text encodings.
Example requests include “extract the product name, price, and availability,” “return every row in this table,” or “find the policy title, effective date, and covered regions.”
Quick start
Provide one to ten public URLs and describe the result you want. A JSON Schema is optional but recommended when downstream code expects stable fields and types.
{"startUrls": [{"url": "https://example.com/"}],"instructions": "Extract the page title and its main descriptive sentence.","jsonSchema": {"type": "object","properties": {"title": {"type": "string"},"description": {"type": "string"}},"required": ["title", "description"],"additionalProperties": false}}
Without jsonSchema, Page Quarry uses JSON-output mode and still requires the model response to
parse as JSON. It does not generate a schema for you.
Worked example
For the input above, the Dataset record is:
{"url": "https://example.com/","finalUrl": "https://example.com/","status": "success","extracted": {"title": "Example Domain","description": "This domain is for use in documentation examples without needing permission."},"schemaValid": true,"httpStatus": 200,"provider": "google-gemini","model": "gemini-3.5-flash-lite","timing": {"fetchSeconds": 0.051963,"transformSeconds": 0.002634,"inferenceSeconds": 8.291204,"totalSeconds": 8.346644},"usage": {"inputTokens": 159,"outputTokens": 30,"thinkingTokens": 0,"totalTokens": 189},"retries": {"fetch": 0,"provider": 0,"output": 0},"responseBytes": 559,"markdownCharacters": 184,"redirects": []}
This one-result run costs:
(1 result × $0.015) + (1 run × $0.00005) = $0.01505
A ten-URL run that emits ten records costs $0.15005. The result rate is
$15 per 1,000 Dataset resultsInput reference
| Field | Required | Default | Description |
|---|---|---|---|
startUrls | Yes | — | One to ten public HTTP/HTTPS URL objects in Apify's standard { "url": "…" } form. |
instructions | Yes | — | What to extract, up to 10,000 characters. |
jsonSchema | No | JSON mode | JSON Schema used for structured output and local validation. |
maxPageBytes | No | 10 MiB | Maximum response body size. Configurable from 1 byte to 25 MiB. |
fetchTimeoutSecs | No | 30 | Per-request fetch timeout, from 1 to 60 seconds. |
Compatible schemas can use object, array, and scalar types; properties and required fields;
additionalProperties; enums and formats; numeric bounds; and array item/count constraints.
Unsupported keywords such as $ref and $defs are rejected before page fetching begins.
Output reference
The default Dataset contains one record per processed URL. A record has status: "success" with an
extracted value, or status: "error" with a stable errorCode and errorCategory. Full source
HTML, extraction instructions, schemas, and raw model responses are not included in the Dataset or
ordinary logs.
| Field | Description |
|---|---|
url | Original URL supplied in the input. |
finalUrl | URL after accepted public redirects, when fetching reached a page. |
status | success or error. |
extracted | Structured JSON returned by the model after validation. Present on success. |
errorCode | Stable machine-readable failure code, such as http_404, unusable_content, or provider_timeout. |
errorCategory | Broad failure stage: fetch, content, provider, or validation. |
httpStatus | Final HTTP status when available. |
provider / model | Inference backend used for the record. |
schemaValid | Whether output passed JSON parsing and the supplied schema. On schema-less calls this means valid JSON. |
timing | Fetch, transformation, inference, and total pipeline seconds. |
usage | Provider-reported input, output, thinking, and total tokens. |
retries | Counts of fetch, provider-transport, and invalid-output retries. |
responseBytes | Downloaded response size. |
markdownCharacters | Size of the Markdown used for extraction. |
redirects | Accepted redirect chain. Every destination is checked against the public-network policy. |
fetchAttempts / providerAttempts | Sanitized attempt telemetry with status, reason, latency, and bounded retry delay. |
Each emitted Dataset record is a billable result, including a classified failure record. Failed pages still require fetch or provider work, and the error record gives you an auditable outcome instead of silently dropping the URL. Input rejected before URL processing produces no Dataset item; the small Actor-start event still applies.
Failure handling
Page Quarry retries only failures that are detectable and likely transient:
- fetch network errors, timeouts, HTTP 408/425/429, and selected 5xx responses;
- provider network errors, timeouts, HTTP 408/429, and 5xx responses;
- one additional identical inference request after empty, malformed, or schema-invalid output.
Transport attempts are bounded at three. Retry-After is honored up to 60 seconds. Page Quarry does
not retry because extracted values merely appear semantically wrong, and it never sends a repair or
self-critique prompt.
Supported and unsupported pages
Page Quarry is intentionally HTTP-only. It does not support:
- authenticated pages, cookies, bearer tokens, or custom authorization headers;
- localhost, private, loopback, link-local, reserved, or cloud-metadata destinations;
- browser rendering or content that appears only after JavaScript executes;
- CAPTCHA solving, anti-bot evasion, or access-denied pages;
- PDFs and other non-HTML documents;
- crawling, link discovery, or agentic navigation.
Every redirect is rechecked against the same public-network policy. Webpage content is treated as untrusted data and cannot grant the model tools, change the extraction request, or authorize an external action.
Accuracy and data handling
AI extraction can make semantic mistakes even when JSON is schema-valid. In the 22-case evaluation, Page Quarry achieved 86.6% field accuracy, 86.1% critical-field accuracy, and 15/22 exact complete records. Verify important outputs before taking consequential action.
Page contents, extraction instructions, and the supplied schema are sent to Google Gemini for inference. Do not put secrets or private data in URLs, instructions, or schemas. Page Quarry is for ordinary public-web content only.