# Facebook Group Post Checker \[$0.20/1k] Exists or Deleted (`memo23/facebook-group-post-checker`) Actor

Facebook Group Post Checker — batch-check group post permalinks and get exists/deleted per post. Paste thousands of URLs or post IDs, one clean row each (exists true/false + title). Pure HTTP, one request per post, no login or browser. Pay only per post checked.

- **URL**: https://apify.com/memo23/facebook-group-post-checker.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Agents, AI, Social media
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.20 / 1,000 group post checks

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/platform/actors/running/actors-in-store#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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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

## Facebook Group Post Checker — Exists / Deleted

<p align="center">
  <img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/fb-group-post-checker/logo@2x.png" alt="Facebook Group Post Checker" width="180"/>
</p>

**Batch-check Facebook group posts you already track and get, for each one, whether it still exists or was deleted.** Paste permalinks (or bare post IDs), pay only per post checked — built for re-checking thousands of posts on whatever cadence you want.

| Input | Row emitted |
|---|---|
| Group post permalink (`/groups/<gid>/permalink/<pid>/`) | `{ exists: true \| false, title, … }` |
| Group post URL (`/groups/<gid>/posts/<pid>/`) | same |
| Bare post ID (`1405052484860259`) | same |

> Pure HTTP. One logged-out request per post. No browser, no login, no third-party unblocker.

---

### Why use this checker?

- **Cheap, high-volume re-checks.** You already scraped these posts once — this tells you which ones died, without re-scraping their content. Priced per post, a small fraction of a full group scrape.
- **Dead-simple output.** One row per post: `exists: true` (still live) or `exists: false` (deleted / gone). No parsing.
- **Any cadence.** Run 500 today, 10k tomorrow — the actor caps itself to your run charge limit and streams results as it goes.
- **Undetermined is honest.** If a post can't be resolved after retries (rate-limit, transient block), it comes back `exists: null` so you can re-queue it — never silently mislabeled as deleted.

### Overview

This is a **status checker, not a content scraper.** It does not extract post text, comments, reactions, or media. For that, use the companion [Facebook Public Group Posts Scraper](https://apify.com/memo23/facebook-public-group-posts-scraper). This actor answers exactly one question per post — *is it still there?* — as cheaply as possible.

### Supported inputs

| Accepted | Example |
|---|---|
| Permalink URL | `https://www.facebook.com/groups/ceburoom4rent/permalink/1405052484860259/` |
| Numeric-group permalink | `https://www.facebook.com/groups/1186897045933590/permalink/1646721006617856/` |
| `/posts/` URL | `https://www.facebook.com/groups/<gid>/posts/<pid>/` |
| `story_fbid` URL | `https://www.facebook.com/story.php?story_fbid=<pid>&id=<gid>` |
| Bare post ID | `1405052484860259` |

Provide them via **`startUrls`** (URL list) or **`postUrls`** (plain list, one per line). Duplicates are removed automatically.

### Use cases

| Audience | What they use it for |
|---|---|
| Marketplace / rentals aggregators | Prune deleted listings from a tracked feed so stale posts don't resurface |
| Lead-gen & outreach | Detect when a for-sale/for-rent post is taken down (a buying signal) |
| Research & moderation | Measure post survival / deletion rates across a group over time |
| Data pipelines | Nightly "still-alive?" pass over a post database before re-enrichment |

### How it works

<p align="center">
  <img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/fb-group-post-checker/how-it-works@2x.png" alt="How it works" width="820"/>
</p>

For each post the actor issues **one logged-out GET** of the permalink through a residential proxy and reads a binary signal from the response:

- A **live** post returns its Story content (`"__typename":"Story"`) and an `og:title` — the actor reports `exists: true` and captures the title.
- A **deleted / non-existent** post returns Facebook's *"content isn't available"* shell with no Story and no `og:title` — the actor reports `exists: false`.

No tokens, no session bootstrap, no headless browser. Blocks are retried on rotated proxy sessions before a post is marked undetermined.

### Input configuration

| Field | Type | Required | Notes |
|---|---|---|---|
| `startUrls` | array | one of the two | Group post permalinks (URL list editor). |
| `postUrls` | array | one of the two | Permalink URLs or bare post IDs, one per line. |
| `maxConcurrency` | integer | no | Posts checked in parallel, 1–20 (default 10). |
| `maxRetries` | integer | no | Retries per post on block / transient error, 0–8 (default 4). |
| `proxy` | object | no | Proxy for non-paying runs. Paying runs use a built-in residential proxy automatically. |

#### Example input

```json
{
  "postUrls": [
    "https://www.facebook.com/groups/ceburoom4rent/permalink/1405052484860259/",
    "https://www.facebook.com/groups/ceburoom4rent/permalink/1404278494937658/",
    "9999999999999999"
  ],
  "maxConcurrency": 10
}
````

### Output overview

One dataset row per **unique** post checked, in the order they were supplied. `exists` is the only field you need; `title` and `checkedAt` are bonuses.

### Output samples

Live post:

```jsonc
{
  "url": "https://www.facebook.com/groups/ceburoom4rent/permalink/1405052484860259/",
  "groupId": "ceburoom4rent",
  "postId": "1405052484860259",
  "exists": true,
  "title": "Kapoy na ug drive layo? Kapoy na ug traffic? ...",
  "checkedAt": "2026-07-17T16:42:20.000Z"
}
```

Deleted / non-existent post:

```jsonc
{
  "url": "https://www.facebook.com/groups/ceburoom4rent/permalink/9999999999999999/",
  "groupId": "ceburoom4rent",
  "postId": "9999999999999999",
  "exists": false,
  "title": null,
  "checkedAt": "2026-07-17T16:42:21.000Z"
}
```

### Key output fields

| Field | Meaning |
|---|---|
| `exists` | `true` = post is live · `false` = deleted / gone · `null` = undetermined after retries (safe to re-check) |
| `url` | The input URL, echoed back for joining to your data |
| `groupId` | Group vanity or numeric ID parsed from the URL |
| `postId` | Post (permalink) ID |
| `title` | The post's `og:title` when it exists; `null` for deleted posts |
| `checkedAt` | ISO timestamp of the check |

### FAQ

**Does it return the post's text/photos/comments?** No — it only reports exists/deleted. For full content use the [Facebook Public Group Posts Scraper](https://apify.com/memo23/facebook-public-group-posts-scraper).

**What does `exists: null` mean?** The post couldn't be resolved after `maxRetries` (usually a transient rate-limit). It's not a verdict — re-run those IDs.

**Can it check posts in private groups?** No. It works on public group posts (the same posts the scraper can read). A post in a group that has since gone private may come back `null`.

**How many can I check per run?** As many as your run charge limit allows — the actor caps itself so it never checks more than you're willing to pay for. Concurrency is 1–20.

**Do I need to supply a proxy?** No. Paid runs use a built-in residential proxy. Non-paid runs fall back to Apify Proxy or a proxy you pass in.

**Does deletion mean the seller removed it?** It means the post no longer resolves for a logged-out visitor — deleted by the author, removed by an admin, or the group went private. The actor can't distinguish the reason.

### Support

Issues and feature requests: open an issue on the actor's **Issues** tab, or email the maintainer via the Apify Store profile.

### Additional services

Need a tailored variant — status of Marketplace listings (ACTIVE/SOLD/PENDING/REMOVED), custom output joins, or a scheduled deletion-monitoring pipeline? Reach out via the Store profile; custom work is welcome.

### Explore more scrapers

- [Facebook Public Group Posts Scraper](https://apify.com/memo23/facebook-public-group-posts-scraper) — full post content, photos, comments
- [Facebook Marketplace Scraper](https://apify.com/memo23/facebook-marketplace-scraper-ppe) — listings, seller, vehicle & real-estate detail

### ⚠️ Disclaimer

This Actor accesses publicly available data on Facebook for legitimate research, market-intelligence, and business-analysis purposes. Use of this Actor must comply with Facebook's Terms of Service and all applicable laws, including data-protection regulations (GDPR, CCPA, etc.). The Actor's authors are not responsible for any misuse. Users must:

- Respect rate limits and avoid overloading Facebook's infrastructure
- Not use the results to violate user privacy or platform terms
- Use the data in compliance with applicable jurisdictions
- Not republish scraped content in violation of copyright

This Actor is not affiliated with, endorsed by, or sponsored by Meta Platforms, Inc. "Facebook" is a trademark of Meta Platforms, Inc. We do not store any checked data; the Actor returns it directly to your Apify dataset for your authorized use.

### SEO Keywords

facebook group post checker, facebook post deleted checker, facebook group scraper, check if facebook post exists, facebook post status api, bulk facebook post checker, facebook permalink checker, facebook group monitoring, post deletion detection, facebook data extraction, facebook group posts scraper, marketplace listing checker, apify facebook actor, no-code facebook scraper, facebook post exists or deleted, facebook group post id lookup, batch url status check, facebook public data, web scraping facebook, facebook post monitoring

# Actor input Schema

## `startUrls` (type: `array`):

Facebook group post permalinks (e.g. https://www.facebook.com/groups/<gid>/permalink/<pid>/). The actor returns whether each still exists or was deleted.

## `postUrls` (type: `array`):

Alternative to the above — paste permalink URLs (or bare post IDs) one per line.

## `maxConcurrency` (type: `integer`):

How many posts to check in parallel (1-20).

## `maxRetries` (type: `integer`):

Retries on block / transient error before reporting the post as undetermined.

## `proxy` (type: `object`):

Proxy for non-paying runs. Paying runs use the built-in residential proxy automatically.

## Actor input object example

```json
{
  "startUrls": [],
  "postUrls": [],
  "maxConcurrency": 10,
  "maxRetries": 4,
  "proxy": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "startUrls": [],
    "postUrls": [],
    "proxy": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/facebook-group-post-checker").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 = {
    "startUrls": [],
    "postUrls": [],
    "proxy": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/facebook-group-post-checker").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [],
  "postUrls": [],
  "proxy": {
    "useApifyProxy": true
  }
}' |
apify call memo23/facebook-group-post-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=memo23/facebook-group-post-checker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Facebook Group Post Checker [$0.20/1k] Exists or Deleted",
        "description": "Facebook Group Post Checker — batch-check group post permalinks and get exists/deleted per post. Paste thousands of URLs or post IDs, one clean row each (exists true/false + title). Pure HTTP, one request per post, no login or browser. Pay only per post checked.",
        "version": "0.0",
        "x-build-id": "XbyDqJ8939PojbfL0"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/memo23~facebook-group-post-checker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-memo23-facebook-group-post-checker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/memo23~facebook-group-post-checker/runs": {
            "post": {
                "operationId": "runs-sync-memo23-facebook-group-post-checker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/memo23~facebook-group-post-checker/run-sync": {
            "post": {
                "operationId": "run-sync-memo23-facebook-group-post-checker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "startUrls": {
                        "title": "Group post URLs",
                        "type": "array",
                        "description": "Facebook group post permalinks (e.g. https://www.facebook.com/groups/<gid>/permalink/<pid>/). The actor returns whether each still exists or was deleted.",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "postUrls": {
                        "title": "Group post URLs / IDs (plain list)",
                        "type": "array",
                        "description": "Alternative to the above — paste permalink URLs (or bare post IDs) one per line.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxConcurrency": {
                        "title": "Max concurrency",
                        "minimum": 1,
                        "maximum": 20,
                        "type": "integer",
                        "description": "How many posts to check in parallel (1-20).",
                        "default": 10
                    },
                    "maxRetries": {
                        "title": "Max retries per post",
                        "minimum": 0,
                        "maximum": 8,
                        "type": "integer",
                        "description": "Retries on block / transient error before reporting the post as undetermined.",
                        "default": 4
                    },
                    "proxy": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy for non-paying runs. Paying runs use the built-in residential proxy automatically.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
