Skip to content

Facebook Profile Photos API

Photos from a public Facebook Page's photo grid, eight per page, newest first; pass pagination.cursor back for the next eight. Facebook exposes each photo's accessibility caption rather than the text of the post it came from, so that is what lands in title. Calls cost 1 credit each. A cache hit is free, and a failed or empty response is never charged.

Try it

Prefilled with the request that produced the example below. No key yet? Get a free key.

Request

GET/v1/facebook/profile-photos
ParameterTypeRequiredDescription
urlstringyesPage URL, @handle, slug, or numeric page id
cursorstringnopagination.cursor from a previous response

Also accepts cache_max_age (a hit costs 0 credits) and include_raw (returns the untouched upstream payload under raw).

curl
curl "$API/v1/facebook/profile-photos?url=https%3A%2F%2Fwww.facebook.com%2Fnike&cache_max_age=7d" \
  -H "x-api-key: $KEY"
JavaScript
const query = new URLSearchParams({
  url: 'https://www.facebook.com/nike',
  cache_max_age: '7d',
});

const response = await fetch(`${API}/v1/facebook/profile-photos?${query}`, {
  headers: { 'x-api-key': KEY },
});

const body = await response.json();
if (!body.success) throw new Error(body.error.code);

// 1 credit, 0 on a cache hit
console.log(body.data, body.meta.creditsCharged);
Python
import os, httpx

r = httpx.get(
    f"{os.environ['API']}/v1/facebook/profile-photos",
    params={
        "url": "https://www.facebook.com/nike",
        "cache_max_age": "7d",
    },
    headers={"x-api-key": os.environ["KEY"]},
    timeout=30,
)

body = r.json()
if not body["success"]:
    raise RuntimeError(body["error"]["code"])

print(body["data"], body["meta"]["creditsCharged"])

Example response

Captured on , with raw removed and lists cut to two items. A live call returns current data.

response
{
  "success": true,
  "data": {
    "items": [
      {
        "platform": "facebook",
        "id": "1095811278580247",
        "type": "image",
        "url": "https://www.facebook.com/photo/?fbid=1095811278580247",
        "title": "No photo description available.",
        "text": null,
        "authorId": "100044541544829",
        "authorHandle": "nike",
        "authorName": "Nike",
        "thumbnailUrl": "https://scontent-itm1-1.xx.fbcdn.net/v/t39.30808-6/471313661_18515827156020081_2460706748949541958_n.jpg?stp=dst-jpg_tt6&cstp=mx1440x1800&ctp=s1440x1800&_nc_cat=110&ccb=1-7&_nc_sid=127cfc&_nc_ohc=uvBZz7VWtHYQ7kNvwEL4Ofa&_nc_oc=AdpJwtyz_dJOITyFp0opk5lzBc7CMWedVWY6yJlTd49dzQAr2Jv84a9n0bSG4fRzTFo&_nc_zt=23&_nc_ht=scontent-itm1-1.xx&_nc_gid=84hbMuBBTR2B5Qcp--dHCA&_nc_ss=70289&oh=00_AQPDrTWz2IY2_hMObNuB56pSLdrhwye9GRk28kohSUpdeg&oe=6ADDEFF8",
        "mediaUrls": [
          "https://scontent-itm1-1.xx.fbcdn.net/v/t39.30808-6/471313661_18515827156020081_2460706748949541958_n.jpg?stp=dst-jpg_tt6&cstp=mx1440x1800&ctp=s1440x1800&_nc_cat=110&ccb=1-7&_nc_sid=127cfc&_nc_ohc=uvBZz7VWtHYQ7kNvwEL4Ofa&_nc_oc=AdpJwtyz_dJOITyFp0opk5lzBc7CMWedVWY6yJlTd49dzQAr2Jv84a9n0bSG4fRzTFo&_nc_zt=23&_nc_ht=scontent-itm1-1.xx&_nc_gid=84hbMuBBTR2B5Qcp--dHCA&_nc_ss=70289&oh=00_AQPDrTWz2IY2_hMObNuB56pSLdrhwye9GRk28kohSUpdeg&oe=6ADDEFF8"
        ],
        "durationSeconds": null,
        "viewCount": null,
        "likeCount": null,
        "commentCount": null,
        "shareCount": null,
        "hashtags": [],
        "mentions": [],
        "isSponsored": null,
        "publishedAt": null,
        "fetchedAt": "2026-10-21T01:52:16.014Z"
      },
      {
        "platform": "facebook",
        "id": "1095811281913580",
        "type": "image",
        "url": "https://www.facebook.com/photo/?fbid=1095811281913580",
        "title": "No photo description available.",
        "text": null,
        "authorId": "100044541544829",
        "authorHandle": "nike",
        "authorName": "Nike",
        "thumbnailUrl": "https://scontent-itm1-1.xx.fbcdn.net/v/t39.30808-6/471224461_18515827027020081_2730394367175734882_n.jpg?stp=dst-jpg_tt6&cstp=mx1440x1800&ctp=s1440x1800&_nc_cat=107&ccb=1-7&_nc_sid=127cfc&_nc_ohc=HX7vWubzhHQQ7kNvwF1MD34&_nc_oc=AdrU5D9l04XDGynAAHIsbgIElbqumyeJUVM9Gs9f0SJ2SdmQ97KfsARtbLJVGSIM8X0&_nc_zt=23&_nc_ht=scontent-itm1-1.xx&_nc_gid=84hbMuBBTR2B5Qcp--dHCA&_nc_ss=70289&oh=00_AQPiKGReEHL5D52IgSM6u0jWcsCnHJ8Nk5yR8_PJ_sVzNA&oe=6ADDF89D",
        "mediaUrls": [
          "https://scontent-itm1-1.xx.fbcdn.net/v/t39.30808-6/471224461_18515827027020081_2730394367175734882_n.jpg?stp=dst-jpg_tt6&cstp=mx1440x1800&ctp=s1440x1800&_nc_cat=107&ccb=1-7&_nc_sid=127cfc&_nc_ohc=HX7vWubzhHQQ7kNvwF1MD34&_nc_oc=AdrU5D9l04XDGynAAHIsbgIElbqumyeJUVM9Gs9f0SJ2SdmQ97KfsARtbLJVGSIM8X0&_nc_zt=23&_nc_ht=scontent-itm1-1.xx&_nc_gid=84hbMuBBTR2B5Qcp--dHCA&_nc_ss=70289&oh=00_AQPiKGReEHL5D52IgSM6u0jWcsCnHJ8Nk5yR8_PJ_sVzNA&oe=6ADDF89D"
        ],
        "durationSeconds": null,
        "viewCount": null,
        "likeCount": null,
        "commentCount": null,
        "shareCount": null,
        "hashtags": [],
        "mentions": [],
        "isSponsored": null,
        "publishedAt": null,
        "fetchedAt": "2026-10-21T01:52:16.014Z"
      }
    ]
  },
  "pagination": {
    "cursor": "WyJZWEJ3WDJOdmJHeGxZM1JwYjI0NmNHWmlhV1F3TjB0RVZrZE9WR3B4U2tGb1dHcG5jbVJxT0RSb01qaEZSRFJ0U2sxV2VUTlVRV1ZvYVZSMk9WSkdkV2xuTlVOb1NGVTRNV3RwY1hoUlowSTBZakZHYVhCUk4ydEZUSFZRUXpSQlpIbDNUR2s1YzIxMGFuQnpla2RCY0dGcyIsIkFRSFRJRlNrNnRWQXBxTjBUVXl4eHRENWVXM0FkVC1QekRHaEtoOW1tcUsyMTAyMGVxTi0tMUVzc2RMYV9GU3RCbjBfOUdYU2EwZ3RYR0taREtzblNhQ0JTZyIsIjEwMDA0NDU0MTU0NDgyOSIsIk5pa2UiXQ.unubj6hAMMVYbWSUXIsbOg",
    "hasMore": true,
    "count": 8
  },
  "meta": {
    "platform": "facebook",
    "endpoint": "facebook.profilePhotos",
    "creditsCharged": 1,
    "cached": false,
    "cacheAgeSeconds": null,
    "durationMs": 2314,
    "requestId": "req_wk8x8oippy00cmrkn2qu"
  }
}

Returns

Returns a list of Post in data.items.

Cost and behaviour

Credits1 per live request, 0 on a cache hit
Cacheableyes: cache_max_age accepts a cached copy
Batchableyes: usable as a target in POST /v1/jobs/batch
Subscribableyes: as often as every 3600 seconds, firing a webhook only on a change

Other Facebook endpoints