TikTok Photo Scraper β Images, Captions & Stats
Pricing
from $1.00 / 1,000 results
TikTok Photo Scraper β Images, Captions & Stats
Extract public TikTok photo posts from URLs. Get ordered image links and dimensions, captions, engagement, creator details, music, hashtags, and mentions in one row per post.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
ScrapingMonkey
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Collect the images and context behind a public TikTok photo post. TikTok Photo Scraper returns the ordered photo URLs, dimensions, caption, music, creator details, and available engagement figures from a full /photo/ link.
A photo post stays in one dataset row, with image lists kept in their original order. No TikTok login or cookies are required, and each result includes its source input and status.
| At a glance | Details |
|---|---|
| π₯ Input | Full TikTok /@username/photo/ID URLs |
| π€ Output | Ordered image URLs, dimensions, caption, engagement, creator, music, and tags |
| π Login required | No |
| β‘ Processing | Up to 5 photo posts concurrently with automatic retries |
| πΎ Delivery | One dataset row per unique valid photo-post ID |
What the TikTok photo post scraper extracts π
The Actor retrieves the photo collection exposed for each requested post and keeps its images together. It also captures the text, sound, and creator context needed to understand the collection.
- Post ID, canonical URL, caption, publication time, and reported creation region
- Ordered image URLs, available alternative URLs, width, and height
- The first photo as the image cover
- Views, likes, comments, shares, and saves when exposed
- Creator profile details and available audience counts
- Music metadata, hashtags, mentions, and source-provided content or interaction flags
The result contains links to images. It does not download image files or convert a photo post into a video.
How to scrape TikTok photo post details π
- Copy the full URL of a public TikTok photo post.
- Paste it into
inputList; add other photo links as separate items. - Start the Actor and check the dataset's
statuscolumn. - Export the photo URLs and the accompanying caption or metrics.
{"inputList": ["https://www.tiktok.com/@qq.mm.pp/photo/7479037796326362385"]}
The address must contain /photo/. Short share links, /video/ links, profile URLs, and bare numeric IDs are not supported.
TikTok photo post data fields and output π¦
| Field group | Included data |
|---|---|
| Post | ID, canonical URL, caption, type, creation date, and region |
| Photo collection | Ordered main and alternative image URLs with dimensions |
| Cover | The first photo's URL, alternatives, width, and height |
| Engagement and creator | Available post metrics, creator identity, bio, account flags, and counts |
| Music and text tags | Sound details, hashtags, mentions, labels, and interaction flags |
Complete illustrative success item; these fictional values show the output structure and are not a live result:
{"input": "https://www.tiktok.com/@trailjournal/photo/7523456789012345678","status": "success","image_cover.url": "https://example.com/trail-view.jpg","url": "https://www.tiktok.com/@trailjournal/photo/7523456789012345678","id": "7523456789012345678","type": "photo","description": "Morning trail with @trailguide #hiking","created_at": "2023-11-14T22:13:20Z","create_time": 1700000000,"location_created": "US","statistics.views": 42700,"statistics.likes": 2860,"statistics.comments": 64,"statistics.shares": 118,"statistics.saves": 390,"author.avatar_large": "https://example.com/trail-journal-large.jpg","author.avatar_medium": "https://example.com/trail-journal-medium.jpg","author.avatar_thumb": "https://example.com/trail-journal-thumb.jpg","author.username": "trailjournal","author.name": "Trail Journal","author.profile_url": "https://www.tiktok.com/@trailjournal","author.id": "7123456789012345678","author.sec_uid": "","author.bio": "Weekend walks and practical trail notes.","author.region": "US","author.is_verified": false,"author.is_private": false,"author.followers": 18400,"author.following": 126,"author.likes": 286000,"author.videos_count": 94,"author.friends_count": 28,"music.id": "7423456789012345678","music.title": "Morning Walk","music.author_name": "Trail Journal","music.author_username": "trailjournal","music.album": "","music.duration": 24,"music.is_original": true,"music.is_commerce": false,"music.is_author_artist": false,"music.cover_large": "https://example.com/morning-walk-large.jpg","music.cover_medium": "https://example.com/morning-walk-medium.jpg","music.cover_thumb": "https://example.com/morning-walk-thumb.jpg","music.play_url": "https://example.com/morning-walk.mp3","images.url": ["https://example.com/trail-view.jpg","https://example.com/trail-map.jpg"],"images.urls": [["https://example.com/trail-view.jpg","https://example.com/trail-view-alt.jpg"],["https://example.com/trail-map.jpg"]],"images.width": [1200,1200],"images.height": [800,800],"image_cover.urls": ["https://example.com/trail-view.jpg","https://example.com/trail-view-alt.jpg"],"image_cover.width": 1200,"image_cover.height": 800,"video.id": "","video.cover": "","video.origin_cover": "","video.dynamic_cover": "","video.play_url": "","video.download_url": "","video.width": 0,"video.height": 0,"video.duration": 0,"video.ratio": "","video.format": "","video.bitrate": 0,"video.encoded_type": "","video.video_quality": "","video.volume_info.loudness": 0,"video.volume_info.peak": 0,"video.volume_info.loudness_range": 0,"video.bitrates": [],"subtitles": [],"hashtags.id": ["54321"],"hashtags.name": ["hiking"],"hashtags.description": [""],"hashtags.profile_url": ["https://www.tiktok.com/tag/hiking"],"hashtags.cover_large": [""],"hashtags.cover_medium": [""],"hashtags.cover_thumb": [""],"mentions.user_id": ["7223456789012345678"],"mentions.sec_uid": [""],"mentions.username": ["trailguide"],"mentions.profile_url": ["https://www.tiktok.com/@trailguide"],"mentions.start": [19],"mentions.end": [30],"is_photo": true,"is_ad": false,"is_aigc": false,"aigc_label_type": 0,"is_original_item": true,"is_official_item": false,"is_secret": false,"for_friends": false,"duet_enabled": false,"stitch_enabled": false,"share_enabled": true,"comments_enabled": true,"comment_status": 0,"collected": false,"diversification_labels": ["Travel","Outdoors"],"suggested_words": ["Hiking"]}
The table and JSON share the same flat keys. images.url, images.width, and images.height are aligned lists: their first values describe the first image, and so on. images.urls keeps an inner list of alternative URLs for each image. Hashtag and mention lists follow the same positional rule within their own group.
Success rows use empty strings, 0, false, or empty lists for unavailable values. A missing metric can therefore appear as zero. Video fields may be empty for photo posts; video.download_url is empty, and subtitles and video.bitrates remain empty lists in the current output. A failed result keeps input and status and sets the photo-post data fields to null.
Input requirements and coverage βοΈ
| Parameter | Type | Required | Rules |
|---|---|---|---|
inputList | array of strings | Yes | At least one full TikTok /@username/photo/numeric-ID URL; no fixed batch-size maximum |
HTTP and HTTPS links on tiktok.com or its subdomains are accepted. The username segment allows 1β24 letters, digits, periods, or underscores. Trailing slashes and query parameters are allowed; output uses a canonical URL.
The returned content must contain photos. A video behind a photo URL is treated as a failed result. Valid requests are deduplicated by post ID, while invalid input entries are saved individually. There are no image-count or pagination settings.
TikTok photo post use cases π―
Carousel creative research
Keep each post's image sequence and caption together when comparing storytelling, layout, and calls to action.
Campaign reporting
Attach engagement figures and creator details to submitted photo-post links without manually copying each metric.
Visual content catalogues
Index image URLs and dimensions alongside the post ID so a review system can retrieve the correct image in sequence.
Caption and sound analysis
Compare the descriptions, hashtags, mentions, and music used across a selected set of photo posts.
Pricing and billable photo post rows π°
Check the Actor's Pricing tab for the current pricing model and rate.
Under dataset-item pricing, each saved success or failed row can be billable. Valid duplicate requests are processed once; invalid entries can each save a failed row. Automatic retries do not independently create extra dataset rows.
A collection with several images remains one result row. Image alternatives, tags, and mentions do not add separate rows.
TikTok Photo Details Scraper API and integrations π
Use the Actor ID from the API tab as $ACTOR_ID and your Apify token as $APIFY_TOKEN.
curl -X POST "https://api.apify.com/v2/acts/$ACTOR_ID/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"inputList":["https://www.tiktok.com/@qq.mm.pp/photo/7479037796326362385"]}'
The request starts a run. Retrieve its dataset after completion, or connect an Apify schedule and webhook to repeat collection and trigger downstream work. Export to JSON, CSV, or Excel, or send selected fields to Google Sheets, Make, Zapier, or your own application.
Reliability and limits β οΈ
Up to five photo posts are processed concurrently. Temporary request failures are retried; unavailable posts and unresolved requests become failed rows so other valid inputs can continue.
The image list reflects what TikTok exposes to the Actor. Removed, private, region-restricted, or embed-disabled posts may be inaccessible. Image and music URLs can expire. Missing metrics or settings use defaults, so interpret them alongside the post's availability rather than treating every zero as a measured count.
Frequently asked questions β
Will each photo become a separate row?
No. One photo post produces one row, with ordered lists for its images and dimensions.
Can I submit a video link?
No. This Actor requires a full /photo/ URL and verifies that the returned post contains photos.
Are alternative image URLs preserved?
Yes. images.urls keeps the available alternatives grouped by image; images.url contains the first available URL for each image.
Does it download the images?
No. It returns image references and dimensions. Download or archive permitted assets separately if your workflow needs files.
Is the soundtrack included?
Music metadata and a playback URL are returned when exposed. The Actor does not create a slideshow video or generate a transcript.
Support, responsible use, and related actors π
For help with a result, share the run ID and a safe public example input through the Actor's support channel. Keep tokens and other credentials out of support messages.
Use public data and media within the permissions and obligations that apply to your project, including privacy and copyright requirements.