DxOMark Camera, Lens & Sensor Score Scraper
ECOMMERCE
DxOMark Camera, Lens & Sensor Score Scraper
Extract objective lab-bench scores for cameras, lenses, and sensors from DxOMark — the world's leading independent image quality measurement authority since 2008.
What this actor does
This actor scrapes scored products from DxOMark, discovering them via the site's sitemap (3,500+ products). For each product it fetches:
- The test/review page to get the overall DxOMark score, protocol type, and review date
- The product page to get the brand and full set of sub-scores
Camera sensors — sub-scores extracted:
- Portrait (Color Depth, in bits)
- Landscape (Dynamic Range, in EV)
- Sports (Low-Light ISO)
Lenses — sub-scores extracted:
- Sharpness (P-Mpix)
- Transmission (TStop)
- Distortion (%)
- Vignetting (EV)
- Chromatic Aberration (µm)
- Tested-on camera body
Output data
Each record contains:
| Field | Type | Description |
|---|---|---|
product_name |
string | Full product name (e.g. "Sony A9 III", "Sigma 90mm F2.8 DG DN") |
brand |
string | Brand/manufacturer |
product_type |
string | camera-sensor or lens |
mount |
string | Lens mount (where available) |
dxomark_overall_score |
integer | Overall DxOMark score |
sub_scores |
string (JSON) | Sub-score key/value pairs as a JSON string |
sensor_specs |
string | Sensor specifications (reserved for future use) |
tested_on_body |
string | Camera body used to test the lens (lenses only) |
launch_price_usd |
number | Launch price in USD (not available in static HTML) |
rank_in_category |
integer | Rank in category (not available in static HTML) |
review_url |
string | URL of the DxOMark test/review page |
review_date |
string | Review publication date |
Sample output (camera sensor)
{
"product_name": "Sony a9 III",
"brand": "Sony",
"product_type": "camera-sensor",
"dxomark_overall_score": 87,
"sub_scores": "{\"Overall Sensor Score\":87,\"Portrait (Color Depth)\":24.1,\"Landscape (Dynamic Range)\":13,\"Sports (Low-Light ISO)\":3224}",
"review_url": "https://www.dxomark.com/sony-a9-iii-sensor-test/",
"review_date": "November 14, 2024"
}
Sample output (lens)
{
"product_name": "Sigma 90 mm F2.8 DG DN (for Sony)",
"brand": "Sigma",
"product_type": "lens",
"dxomark_overall_score": 39,
"sub_scores": "{\"Sharpness\":\"35 P-Mpix\",\"Transmission\":\"2.9 TStop\",\"Distortion\":\"1.2 %\",\"Vignetting\":\"-2.1 EV\",\"Chr. aberration\":\"17 µm\"}",
"tested_on_body": "Sony A7R IV",
"review_url": "https://www.dxomark.com/sigma-90mm-f2-8-dg-dn-for-sony-lens-test/",
"review_date": "June 30, 2022"
}
Input configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
maxItems |
integer | Yes | Maximum number of products to scrape |
startUrls |
array | No | Specific DxOMark test/review page URLs to scrape. Leave empty to discover all products via sitemap. |
Scrape specific products
To scrape specific products, provide their DxOMark test/review page URLs:
{
"maxItems": 10,
"startUrls": [
{ "url": "https://www.dxomark.com/sony-a9-iii-sensor-test/" },
{ "url": "https://www.dxomark.com/sigma-90mm-f2-8-dg-dn-for-sony-lens-test/" }
]
}
Discover and scrape all products (sitemap crawl)
Leave startUrls empty to walk the DxOMark sitemap and discover all scored products:
{
"maxItems": 500
}
Use cases
- Gear recommendation tools — build recommendation engines using objective sensor scores
- Affiliate content sites — programmatically enrich product pages with lab-measured scores
- Price-intelligence platforms — correlate DxOMark scores with market pricing
- ML training datasets — build computer vision and image quality models with ground-truth measurements
- Camera comparison apps — power comparison tools with the same data DxOMark uses
Notes
- No proxy required — DxOMark serves plain HTML with no anti-bot challenges
launch_price_usdandrank_in_categoryare loaded via JavaScript on the product page and are not available in the static HTML; both fields outputnull- Smartphone camera tests are filtered out; only camera sensors (
-sensor-test/) and lenses (-lens-test/,-lens-review/) are included - The
sub_scoresfield is a JSON-encoded string; parse it withJSON.parse()in your downstream code