# Recent Posts Scraper - Instagram, TikTok & X (`nooesc/social-media-recent-account-posts`) Actor

Collect recent posts from known Instagram, TikTok and X (Twitter) profiles. Export post URLs, captions and available metrics to JSON or CSV. Fixed 21-day window with explicit partial coverage. $3 per 1,000 delivered posts. No social login or proxy setup.

- **URL**: https://apify.com/nooesc/social-media-recent-account-posts.md
- **Developed by:** [NooEsc](https://apify.com/nooesc) (community)
- **Categories:** Social media
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 1,000 delivered instagram posts

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

### Find recent posts from known creator profiles

Collect recent public posts from known Instagram, TikTok and X creator accounts. **YouTube discovery is not currently configured, and Facebook timelines are not supported.** This is account-based collection, not search or niche discovery.

Use this recent posts scraper to review a creator's available recent content, collect post URLs for follow-up metrics refreshes, or feed your own content-review spreadsheet. Get a consistent dataset across the three supported platforms without supplying social logins or proxies.

### Quick start

1. Open the Actor in Apify Console and paste an Instagram, TikTok or X **profile URL**.
2. Start with a few posts per account and a small run spending limit, then click **Start**.
3. Export JSON, CSV or Excel from the dataset. Read `OUTPUT` for each account's coverage, stop reason and collection window.

```json
{"urls":["https://www.tiktok.com/@nasdaily"],"maxPostsPerAccount":20,"maxResults":100}
```

### Window and coverage

The window is fixed to the trailing **21 days** when each source collection begins. Returned post metrics are cumulative observations, not engagement gained during those 21 days. Up to 200 posts per account and 1,000 globally can be delivered. Supply no more than 10 known profile URLs.

TikTok has a paginated creator feed. Instagram can fall back to a bounded authored-reel preview; X currently uses a bounded public-originals preview. Those sources stay explicitly partial. YouTube account collection requires maintainer-side YouTube provider configuration; at initial catalog setup that key was not configured, so YouTube discovery is **not currently ready** even though ordinary YouTube post/profile refresh works. Do not use this Actor for YouTube discovery until this availability note is updated.

The default dataset contains post records from the specific completed collection, with canonical post URL, platform ID, available metrics and observation timestamp. `OUTPUT` adds per-source coverage, stop reason and window. An empty/failed/partial result is not proof that the account has no other posts. Unknown fields remain null.

### Example output

Illustrative excerpt, not live data:

```json
{
  "sourceUrl": "https://x.com/example",
  "platform": "x",
  "status": "succeeded",
  "url": "https://x.com/example/status/1234567890",
  "postId": "1234567890",
  "caption": "An illustrative post.",
  "imageUrl": "https://images.example/post.jpg",
  "metrics": { "views": 1200, "likes": 40, "comments": null, "shares": null, "bookmarks": null },
  "observedAt": "2026-09-09T12:00:00.000Z",
  "collectionScope": "sync_specific_collection",
  "syncCoverage": "partial"
}
```

`sourceUrl` identifies the input account; `url` identifies the collected post. Keep both when joining datasets. Available metrics may differ by platform. Collection membership is specific to the source sync; the post's observation timestamp should still be checked before treating metrics as current.

`imageUrl` is the post image or video cover when the source exposes one, otherwise `null`. It is additive for compatibility with older runs and never delays post delivery.

### Limits and cost

Launch price: **$3 per 1,000 delivered post records**, with no separate account-refresh or source-status charge. Apify platform usage may apply separately. The Console pricing tab is authoritative.

For example, 100 delivered posts generate **$0.30 in result charges**. Requested limits are ceilings, not promised yields. A new run may collect and charge for posts already returned in an earlier run.

Run spending and result caps are enforced before more source work is admitted. Use `resultId` for deduplication after interrupted delivery. Aborting stops new admission but backend work already submitted can finish. No customer social login, proxies or SIN credentials are needed.

Built and maintained by NooEsc, powered by SIN. Public content only; no followers lists, private accounts, DMs or unrestricted historical archives.

### API, workflow and support

Use this Actor's **API** tab for request and SDK examples. To revisit collected posts later, pass their `url` values to [Post Metrics](https://apify.com/nooesc/social-media-post-metrics). Each Actor run is separately priced; this does not automatically create recurring tracking.

Need follower counts or bios instead? Use [Account Profiles](https://apify.com/nooesc/social-media-account-profiles). Need the comments on a collected post? Use [Public Comments](https://apify.com/nooesc/social-media-public-comments), which reports its own coverage limits.

Ask for help in the [Issues tab](https://apify.com/nooesc/social-media-recent-account-posts/issues). Include a run URL and the unexpected result, never cookies, tokens or private data.

# Actor input Schema

## `urls` (type: `array`):

Up to 10 known Instagram, TikTok or X profiles. Facebook is not supported and YouTube discovery is not currently configured. See the README for coverage limits.

## `maxPostsPerAccount` (type: `integer`):

Within the fixed trailing 21 days. Instagram and X may return limited previews. An empty or partial source is not proof the account has no other posts.

## `maxResults` (type: `integer`):

Global cap across accounts, additionally bounded by the run spending limit.

## Actor input object example

```json
{
  "urls": [
    "https://www.tiktok.com/@nasdaily"
  ],
  "maxPostsPerAccount": 20,
  "maxResults": 1000
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.tiktok.com/@nasdaily"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("nooesc/social-media-recent-account-posts").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "urls": ["https://www.tiktok.com/@nasdaily"] }

# Run the Actor and wait for it to finish
run = client.actor("nooesc/social-media-recent-account-posts").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.tiktok.com/@nasdaily"
  ]
}' |
apify call nooesc/social-media-recent-account-posts --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nooesc/social-media-recent-account-posts"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/rV9O48b5bDiXxNhim/builds/4e87QcNsMekB3bRgi/openapi.json
