# Brand Social Media Search (`codetr/brand-social-media-search`) Actor

Find public social media profiles for brands, companies, websites, creators, and local businesses across major platforms using Google search results.

- **URL**: https://apify.com/codetr/brand-social-media-search.md
- **Developed by:** [Yusuf Barış](https://apify.com/codetr) (community)
- **Categories:** Jobs, Lead generation, Social media
- **Stats:** 15 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

## Brand Social Profile Finder - Cheap & Fast

Find public social media profiles for brands, companies, creators, websites, and local businesses using Google search results.

This Actor discovers public profiles across Instagram, Facebook, LinkedIn Company Pages, YouTube, TikTok, X/Twitter, Pinterest, Threads, Medium, and GitHub. It returns profile URLs, handles, result titles, snippets, source queries, match types, confidence scores, and timestamps.

This Actor is useful for lead enrichment, CRM enrichment, agency research, brand monitoring, competitor research, and local business research when you need fast public profile discovery without logging in to social platforms.

### What This Actor Does

Searches Google results for brand, company, domain, creator, or local business inputs.

Finds public profile-like URLs on supported social platforms.

Uses optional domain and location context to improve matching.

Checks URLs against platform-specific profile patterns.

Skips low-confidence, invalid, irrelevant, and duplicate results.

Saves structured profile records to the Apify dataset for export as JSON, CSV, Excel, XML, or through the API.

### Common Use Cases

Enrich lead lists with public social profile URLs.

Add social profile fields to CRM company records.

Research brands, companies, creators, and local businesses.

Build agency prospecting and audit workflows.

Monitor competitor or market presence across social platforms.

Prepare public profile datasets for analytics, AI enrichment, and internal tools.

### How To Use

Enter one or more brand or company names in `brands`.

Optionally add matching domains in `domains` to improve confidence.

Add `locations` when searching for local businesses or regional brands.

Choose the platforms you want to search.

Set `maxProfilesPerBrand` to control how many profiles are returned for each brand.

Set `maxSearchesPerBrand` and `resultsPerSearch` when you want broader or narrower discovery.

Run the Actor and download the dataset from the run results.

### Example Input

```json
{
  "brands": ["Apify", "OpenAI"],
  "domains": ["apify.com", "openai.com"],
  "locations": ["United States"],
  "platforms": ["instagram", "facebook", "linkedin", "youtube", "tiktok", "x"],
  "maxProfilesPerBrand": 5,
  "maxSearchesPerBrand": 6,
  "minConfidenceScore": 0.65,
  "deduplicateProfiles": true,
  "resultsPerSearch": 5,
  "country": "US",
  "language": "en"
}
```

### Input Configuration

| Field | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `brands` | Array of strings | No | - | Brand, company, creator, website, or local business names to search. Required when `domains` is empty. |
| `domains` | Array of strings | No | - | Optional company or website domains. When supplied in the same order as `brands`, they are paired by index. |
| `locations` | Array of strings | No | - | Optional location context, such as country, city, or region. Useful for local businesses and regional brands. |
| `platforms` | Array of strings | No | `instagram`, `facebook`, `linkedin`, `youtube`, `tiktok`, `x` | Social platforms to search. |
| `maxProfilesPerBrand` | Integer | No | `5` | Maximum high-confidence profiles returned per brand. Supported range: 1 to 50. |
| `maxSearchesPerBrand` | Integer | No | `6` | Maximum searches tried for each brand. Supported range: 1 to 50. |
| `minConfidenceScore` | Number | No | `0.65` | Minimum confidence score required for a profile to be saved. Supported range: 0 to 1. |
| `deduplicateProfiles` | Boolean | No | `true` | When enabled, duplicate profile URLs are skipped. |
| `resultsPerSearch` | Integer | No | `5` | Number of Google results checked for each search. Supported range: 1 to 100. |
| `country` | String | No | - | Optional Google country code or country name, such as `US`, `TR`, `GB`, or `Germany`. |
| `language` | String | No | `en` | Optional Google UI language code, such as `en`, `tr`, `de`, `fr`, or `es`. |

### Output Data

Each dataset item represents one discovered public social profile.

### Example Output

```json
{
  "brandInput": "Apify",
  "domainInput": "apify.com",
  "locationInput": "United States",
  "platform": "linkedin",
  "profileUrl": "https://linkedin.com/company/apify",
  "handle": "apify",
  "title": "Apify",
  "snippet": "Apify is a full-stack web scraping and automation platform...",
  "matchType": "domain_and_brand_match",
  "confidenceScore": 0.94,
  "sourceQuery": "\"apify.com\" site:linkedin.com/company",
  "source": "google_search",
  "status": "found",
  "scrapedAt": "2026-05-14T12:00:00.000Z"
}
```

### Output Fields

| Field | Type | Description |
| --- | --- | --- |
| `brandInput` | String | Original brand or company name used for the search. |
| `domainInput` | String or null | Domain paired with the brand input, when provided. |
| `locationInput` | String or null | Location context used for the profile search, when provided. |
| `platform` | String | Social platform where the public profile was found. |
| `profileUrl` | String | Normalized public profile URL. |
| `handle` | String or null | Extracted profile handle, slug, channel ID, or organization name. |
| `title` | String | Google result title for the matched profile. |
| `snippet` | String | Google result snippet for the matched profile. |
| `matchType` | String | How the result matched the brand, domain, or location. |
| `confidenceScore` | Number | Confidence score between 0 and 1. |
| `sourceQuery` | String | Search query used to discover the profile. |
| `source` | String | Search source that produced the result. |
| `status` | String | Result status. Saved profile records use `found`. |
| `scrapedAt` | String | ISO timestamp when the profile record was saved. |

### Supported Platforms

| Platform | Accepted Profile Examples |
| --- | --- |
| Instagram | `instagram.com/{handle}` |
| Facebook | `facebook.com/{page}` |
| LinkedIn Company | `linkedin.com/company/{slug}` |
| YouTube | `youtube.com/@{handle}`, `youtube.com/channel/{id}` |
| TikTok | `tiktok.com/@{handle}` |
| X / Twitter | `x.com/{handle}`, `twitter.com/{handle}` |
| Pinterest | `pinterest.com/{handle}` |
| Threads | `threads.net/@{handle}` |
| Medium | `medium.com/@{handle}` |
| GitHub | `github.com/{org}` |

### Performance Tips

Use domains when available. Domain context usually improves profile matching.

Use locations for local businesses, franchises, branches, and regional brand pages.

Select only the platforms you need for faster runs.

Increase `maxSearchesPerBrand` for broader discovery when a brand has many regional or platform-specific pages.

Raise `minConfidenceScore` when you want stricter matching, or lower it when you prefer broader discovery that you will review manually.

### Limitations

This Actor searches public Google results only.

It does not log in to social platforms or access private, hidden, restricted, or account-only data.

It does not extract emails, phone numbers, messages, followers, posts, comments, or full social profile details.

LinkedIn support focuses on company pages. Personal LinkedIn profiles are not targeted.

Google result availability can vary by country, language, brand ambiguity, and platform indexing.

Some valid public profiles may not appear in Google results for every query.

### FAQ

#### Can this Actor find private profiles?

No. It only finds public profile URLs visible in Google search results.

#### Does this Actor require social platform login or cookies?

No. It does not use platform login, cookies, or private account access.

#### Can it find LinkedIn people profiles?

No. LinkedIn support is focused on company pages. Personal profile discovery is outside the scope of this Actor.

#### Why are some expected profiles missing?

The profile may not be indexed by Google, the brand name may be ambiguous, or the result may have scored below the configured confidence threshold.

#### Why are some results skipped?

Results are skipped when the URL is not a supported public profile URL, the confidence score is too low, the page looks irrelevant, or the profile was already saved as a duplicate.

#### Which export formats are supported?

The Apify dataset can be exported as JSON, CSV, Excel, XML, RSS, or accessed through the Apify API.

### Technical Details

Runtime: Node.js 20+

Search source: public Google search results

Dataset format: one public social profile per item

Supported profile matching: brand, domain, location, handle, title, and snippet heuristics

### Support

If you find a bug, need another platform, or want an additional output field, open an issue in the Actor Issues tab.

# Actor input Schema

## `brands` (type: `array`):

Brand, company, creator, or local business names to search.

## `domains` (type: `array`):

Optional domains. When supplied in the same order as brands, they are paired by index.

## `locations` (type: `array`):

Optional location context for local businesses or regional brands.

## `platforms` (type: `array`):

Social platforms to search.

## `maxProfilesPerBrand` (type: `integer`):

Maximum high-confidence profiles returned per brand.

## `maxSearchesPerBrand` (type: `integer`):

Maximum search queries tried for each brand.

## `minConfidenceScore` (type: `number`):

Only profiles at or above this score are written to the dataset.

## `deduplicateProfiles` (type: `boolean`):

Skip duplicate profiles using platform + normalized URL.

## `resultsPerSearch` (type: `integer`):

Number of Google results requested for each search.

## `country` (type: `string`):

Optional Google country code or country name.

## `language` (type: `string`):

Optional Google UI language code, for example en or tr.

## Actor input object example

```json
{
  "brands": [
    "Apify"
  ],
  "domains": [
    "apify.com"
  ],
  "platforms": [
    "instagram",
    "facebook",
    "linkedin",
    "youtube",
    "tiktok",
    "x"
  ],
  "maxProfilesPerBrand": 5,
  "maxSearchesPerBrand": 6,
  "minConfidenceScore": 0.65,
  "deduplicateProfiles": true,
  "resultsPerSearch": 5,
  "language": "en"
}
```

# Actor output Schema

## `profiles` (type: `string`):

No description

## `runSummary` (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 = {
    "brands": [
        "Apify"
    ],
    "domains": [
        "apify.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("codetr/brand-social-media-search").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 = {
    "brands": ["Apify"],
    "domains": ["apify.com"],
}

# Run the Actor and wait for it to finish
run = client.actor("codetr/brand-social-media-search").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 '{
  "brands": [
    "Apify"
  ],
  "domains": [
    "apify.com"
  ]
}' |
apify call codetr/brand-social-media-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,codetr/brand-social-media-search"
        }
    }
}
```

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/eRMLiEunTfVqCBkjN/builds/JJucCynO5IzTZGW9L/openapi.json
