AI Face Age Estimator
Pricing
from $4.00 / 1,000 results
AI Face Age Estimator
Face-analysis API to predict age, attractiveness score (with gender) or a 478-point 3D face mesh with head pose from image URLs, one analysis per run. Includes face bounding box and crop. Get fast JSON results via a dedicated face-analysis API.
Pricing
from $4.00 / 1,000 results
Rating
0.0
(0)
Developer
DataDolphin
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Estimate the apparent age of a face in any image. Instead of age, a run can also return an attractiveness score with gender or a 478-point 3D face mesh with head pose (yaw, pitch, roll). Age and attractiveness results can include the face bounding box and a cropped face image.
The Actor calls our own face-analysis API directly, running the same age-estimation model we use in production. It does not scrape websites, so results are fast, structured and consistent.
What can you use it for?
- Age estimation for user-generated photos, profile pictures, or research datasets
- Enriching image catalogs with age, gender and attractiveness metadata
- Face alignment, AR and avatar pipelines that need MediaPipe-compatible landmarks
- Checking head pose (frontal vs. turned) before downstream processing
How to use
- Add one or more public image URLs to Image URLs.
- Pick one analysis: Age estimation, Attractiveness score (+ gender) or Face mesh.
- Click Start. Results appear in the Output tab and can be exported as JSON, CSV, Excel or via API.
Each run performs exactly one analysis. To get both age and attractiveness for the same images, start one run with age and another run with attractiveness.
Only the primary (largest) face in each image is analyzed.
Pricing
This Actor uses pay-per-event pricing. You pay per result, and each successfully analyzed image is one result:
| Event | Price |
|---|---|
| Result (one analyzed image) | $4.00 per 1,000 results |
| Actor start | $0.00005 per run |
Images that fail (no face detected, invalid or unreachable image, API errors) are not written to the dataset and not charged. They are listed in the FAILED_IMAGES record instead (see Output). If you set a maximum cost per run, the Actor stops cleanly when the limit is reached and keeps all results produced so far.
Input
| Field | Type | Default | Description |
|---|---|---|---|
imageUrls | array of strings | – | Public HTTP(S) image URLs (max 15 MB, max 4500 px per side). |
analysis | string | "age" | Exactly one of age, attractiveness, facemesh. |
returnBoundaryBox | boolean | true | Face x, y, width, height (age & attractiveness). |
saveFaceCrop | boolean | false | Save a JPEG crop of the face and return its URL (age & attractiveness). |
returnGender | boolean | true | Gender with the attractiveness analysis. |
returnKeypoints | boolean | true | 478 normalized x, y, z landmarks (face mesh). |
returnFrontalizedKeypoints | boolean | false | 478 pose-corrected landmarks (face mesh). |
returnPose | boolean | true | Yaw, pitch, roll and frontal deviation (face mesh). |
maxConcurrency | integer | 5 | Parallel requests (1–20). |
The older analyses array field is still accepted for existing integrations, but only with a single value (e.g. ["age"]). A run that asks for more than one analysis fails immediately with an input error and nothing is charged.
Example input:
{"imageUrls": ["https://howolddoyoulook.com/static/images/sample/portrait_example_male.jpg"],"analysis": "age","saveFaceCrop": true}
Output
One dataset item per successfully analyzed image. It contains only the fields of the selected analysis.
Age ("analysis": "age"):
{"imageUrl": "https://howolddoyoulook.com/static/images/sample/portrait_example_male.jpg","status": "success","analysis": "age","apiVersion": "1.1","age": 25.42,"boundaryBox": { "x": 113, "y": 89, "width": 142, "height": 180 },"faceCropUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/face-000000.jpg"}
Attractiveness ("analysis": "attractiveness"):
{"imageUrl": "https://howolddoyoulook.com/static/images/sample/portrait_example_male.jpg","status": "success","analysis": "attractiveness","apiVersion": "1.1","attractivenessScore": 7.42,"attractivenessScoreAdjusted": 8.11,"gender": "male","boundaryBox": { "x": 113, "y": 89, "width": 142, "height": 180 }}
attractivenessScoreis the raw 0–10 model score;attractivenessScoreAdjustedis calibrated (3.5–10) and recommended for display.- Bounding-box coordinates refer to the image after downscaling its longest side to 1000 px.
- Face mesh (
"analysis": "facemesh"):keypoints,frontalizedKeypoints(478 ×{x, y, z}) andheadPose(yaw,pitch,roll,off_frontal_deg,frontal_deviation).
Failed images
Failed images are not added to the dataset (so they are not charged). When at least one image fails, the run saves a FAILED_IMAGES record in its default key-value store, and the run's status message says how many failed:
[{"imageUrl": "https://example.com/no-face.jpg","analysis": "age","error": { "code": "NO_FACE_DETECTED", "message": "..." }}]
Error codes: VALIDATION_ERROR, IMAGE_TOO_LARGE, IMAGE_DIMENSIONS_TOO_LARGE, INVALID_IMAGE, NO_FACE_DETECTED, IMAGE_URL_UNREACHABLE, UPSTREAM_ERROR, UPSTREAM_TIMEOUT, INTERNAL_ERROR, NETWORK_ERROR. Temporary server errors are retried automatically.
Run it via API
curl -X POST "https://api.apify.com/v2/acts/faceanalysis2~face-age-estimator/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"imageUrls": ["https://howolddoyoulook.com/static/images/sample/portrait_example_male.jpg"], "analysis": "age"}'
Limitations and responsible use
- Age, gender and attractiveness are estimates of appearance, not facts about a person. Don't use them as the sole basis for decisions about people (e.g. age verification for legal compliance, hiring, credit or access decisions).
- Face images and derived data can be biometric personal data under GDPR and similar laws. Make sure you have a legal basis and any required consent for the images you process.
- Images must be publicly reachable URLs; private, local or unreachable addresses are refused.
Support
Found a problem, or need another output field or higher volumes? Open an issue in the Issues tab of this Actor and we'll get back to you.