AI Face Age Estimator avatar

AI Face Age Estimator

Pricing

from $4.00 / 1,000 results

Go to Apify Store
AI Face Age Estimator

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

DataDolphin

Maintained by Community

Actor 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

  1. Add one or more public image URLs to Image URLs.
  2. Pick one analysis: Age estimation, Attractiveness score (+ gender) or Face mesh.
  3. 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:

EventPrice
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

FieldTypeDefaultDescription
imageUrlsarray of stringsPublic HTTP(S) image URLs (max 15 MB, max 4500 px per side).
analysisstring"age"Exactly one of age, attractiveness, facemesh.
returnBoundaryBoxbooleantrueFace x, y, width, height (age & attractiveness).
saveFaceCropbooleanfalseSave a JPEG crop of the face and return its URL (age & attractiveness).
returnGenderbooleantrueGender with the attractiveness analysis.
returnKeypointsbooleantrue478 normalized x, y, z landmarks (face mesh).
returnFrontalizedKeypointsbooleanfalse478 pose-corrected landmarks (face mesh).
returnPosebooleantrueYaw, pitch, roll and frontal deviation (face mesh).
maxConcurrencyinteger5Parallel 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 }
}
  • attractivenessScore is the raw 0–10 model score; attractivenessScoreAdjusted is 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}) and headPose (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.