# Carrd Profile Scraper - Links, Socials, Emails & Commerce (`ahmed_jasarevic/carrd-profile-scraper`) Actor

Extract complete Carrd.co one-page profiles: name, bio, avatar, outbound links, social profiles, emails (decoded from obfuscated mailto links), contact forms and commerce signals (Stripe, PayPal, Gumroad). For lead-gen, outreach and creator-economy data vendors.

- **URL**: https://apify.com/ahmed\_jasarevic/carrd-profile-scraper.md
- **Developed by:** [Ahmed Jasarevic](https://apify.com/ahmed_jasarevic) (community)
- **Categories:** Lead generation, Social media, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

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.

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

## Carrd Profile Scraper — Links, Socials, Emails & Commerce Signals

**Extract complete [Carrd.co](https://carrd.co) one-page profiles** — profile name, bio, avatar, every outbound link, classified social profiles, emails (including emails hidden inside Carrd's obfuscated `mailto:` links), embedded contact/signup forms, and commerce signals (Stripe, PayPal, Gumroad and other payment embeds). Built for **lead-gen agencies, influencer outreach teams, creator-economy data vendors and email-finder SaaS**.

Carrd is one of the most popular free one-page site builders (free subdomains at `*.carrd.co`, plus `crd.co`, `drr.ac`, `ju.mp`, `uwu.ai` and custom domains). Its pages are 100% server-rendered, so this actor extracts everything with a lightweight HTTP crawler — **no browser, no CAPTCHAs, no heavy compute**. You can run it on Apify's cloud with automatic proxy rotation, scheduling, API access and clean JSON/CSV/Excel output.

### Why use Carrd Profile Scraper?

- **Lead generation**: every Carrd page is a lead. Get the owner's name, bio, email (Carrd obfuscates emails in `mailto:` links — this actor decodes them), and social profiles in one record.
- **Influencer outreach**: identify creators' platforms (Instagram, TikTok, X, YouTube, Twitch, Discord...) and contact channels.
- **Commerce intelligence**: detect whether a profile sells — Stripe checkout buttons/price IDs, PayPal buttons, Gumroad buy buttons, Lemon Squeezy, Ko-fi, Patreon, Buy Me a Coffee and more — useful for creator-economy data products.
- **Email enrichment**: decode Carrd's entity+URL-obfuscated mailto links, plus grab plain-text emails.
- **Cheap at scale**: CheerioCrawler (plain HTTP) is ~10x cheaper than browser scrapers on Apify compute units.

### How to use

1. **Create a task** in Apify Console (or use the API) and paste your list of Carrd site URLs into **Start URLs**.
2. Optionally set `maxRequestsPerCrawl` (how many profiles to scrape), `maxConcurrency` and proxy options.
3. **Run the actor**. Each input URL produces one dataset record with all extracted fields.
4. Download results as JSON, CSV, HTML or Excel, or pull them via the Apify API.

Free (unauthenticated) runs are capped at **10 profiles**; authenticated runs scrape up to your configured limit.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `startUrls` | array of URLs | *required* | Carrd sites to scrape (`*.carrd.co`, `*.crd.co`, custom domains...) |
| `maxRequestsPerCrawl` | integer | 100 | Max profiles per run (free users capped at 10) |
| `maxConcurrency` | integer | 5 | Parallel requests (keep modest to avoid rate limits) |
| `useApifyProxy` | boolean | true | Route through Apify proxy (recommended) |
| `proxyGroup` | select | AUTO | `AUTO` (datacenter) or residential `BUYPROXIES94952` |
| `includeRawHtml` | boolean | false | Attach full page HTML to each record |

### Output

One record per URL. Example:

```json
{
  "url": "https://johnsmith-demo.carrd.co/",
  "profileName": "John Smith",
  "siteTitle": "John Smith (DEMO)",
  "bio": "Just a Carrd demo.",
  "avatar": "https://johnsmith-demo.carrd.co/assets/images/card.jpg?v90248967512051",
  "outboundLinks": [{ "href": "https://twitter.com/", "text": "Twitter" }],
  "socialProfiles": [{ "platform": "Twitter/X", "url": "https://twitter.com/", "handle": "johnsmith" }],
  "emails": ["hello@carrd.co"],
  "forms": [{
    "id": "form01",
    "fields": [{ "name": "email", "type": "email", "placeholder": "Email", "required": true }],
    "hasEmailField": true
  }],
  "commerce": {
    "stripe": { "detected": false, "items": [] },
    "paypal": { "detected": false, "items": [] },
    "gumroad": { "detected": true, "items": ["https://user.gumroad.com/l/product"] },
    "other": { "detected": false, "items": [] },
    "hasCommerce": true
  },
  "isCarrd": true
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### Data table

| Field | Description |
|---|---|
| `url` | The scraped page URL |
| `profileName` | Owner/brand name (first H1, else og:title) |
| `siteTitle` | `<title>` tag |
| `bio` | og:description / meta description / longest paragraph |
| `avatar` | Avatar or share image URL |
| `paragraphs` | All paragraph texts on the page |
| `outboundLinks` | All external links with anchor text |
| `socialProfiles` | Classified social links: platform, URL, handle |
| `emails` | Decoded emails from mailto links + text |
| `forms` | Contact/signup form details (fields, email field, required flags) |
| `commerce` | Stripe / PayPal / Gumroad / other payment signals |
| `isCarrd` | Whether the page is confirmed Carrd-hosted |
| `scrapedAt` | ISO timestamp of the run |

### How much does it cost to scrape Carrd sites?

This actor is a **plain HTTP crawler** — no browser. Expect roughly **1 compute unit per 1,000–2,000 pages** on Apify (cheaper than any browser-based scraper). Free-tier preview runs are capped at 10 profiles so you can try it at zero cost. Use `maxConcurrency` 3–5 to stay polite to the target and keep using the built-in Apify proxy.

### Tips & advanced options

- **Find more Carrd sites**: combine with a Google search ("site:carrd.co") and feed the result URLs into `startUrls`.
- **Residential proxy**: if a specific target blocks the datacenter `AUTO` proxy, switch `proxyGroup` to `BUYPROXIES94952`.
- **Lead-scoring**: filter the dataset on `commerce.hasCommerce === true` to prioritize profiles that already sell (likely to buy outreach/automation tools).
- **Form detection**: `forms` includes `hasEmailField` and `hasNameField` so you can instantly spot pages that capture leads (newsletter signups, contact forms).
- **Avoid CAPTCHA triggers**: keep `maxConcurrency` low and don't re-run the same URL list back-to-back thousands of times.

### FAQ, disclaimers, and support

- **Is scraping Carrd legal?** Carrd's free subdomains are public web pages; extracting publicly available profile/link data is generally fine. Respect the sites' terms, do not harvest data for spam, and comply with applicable privacy laws (e.g. GDPR/CCPA) when storing personal data. This actor does not bypass any login or access controls.
- **Custom domains**: the actor works on any domain that renders a Carrd page (confirmed via the `cda-signature` meta tag), not only `*.carrd.co`.
- **Known limitation**: content loaded purely via embeds that need JS to render inside iframes (e.g. full Shoprocket storefronts) is detected by signal, not deep-scraped — if you need embedded-store product data, contact us for a custom extension.
- **Support**: open an issue on the Apify Actor's Issues tab, or reach out for custom solutions (bulk lists, CRM enrichment, Google Sheets sync, Zapier/n8n integration).

# Actor input Schema

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

List of Carrd sites to scrape. Can be carrd.co subdomains, alternate Carrd domains or custom domains hosted on Carrd. Each URL yields one dataset record.

## `maxRequestsPerCrawl` (type: `integer`):

Maximum number of profiles to scrape in one run. Free users are capped at 10 regardless of this value.

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

Number of parallel requests. Keep modest to avoid rate limiting.

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

Apify Proxy with Residential IPs is recommended to avoid blocking.

## `includeRawHtml` (type: `boolean`):

Attach the full page HTML to each record. Useful for debugging, increases dataset size.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://johnsmith-demo.carrd.co"
    },
    {
      "url": "https://janeanderson-demo.carrd.co"
    },
    {
      "url": "https://caycepollard-demo.carrd.co"
    }
  ],
  "maxRequestsPerCrawl": 100,
  "maxConcurrency": 5,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "includeRawHtml": false
}
```

# Actor output Schema

## `results` (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 = {
    "startUrls": [
        {
            "url": "https://johnsmith-demo.carrd.co"
        },
        {
            "url": "https://janeanderson-demo.carrd.co"
        },
        {
            "url": "https://caycepollard-demo.carrd.co"
        }
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ahmed_jasarevic/carrd-profile-scraper").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": [
        { "url": "https://johnsmith-demo.carrd.co" },
        { "url": "https://janeanderson-demo.carrd.co" },
        { "url": "https://caycepollard-demo.carrd.co" },
    ],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("ahmed_jasarevic/carrd-profile-scraper").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 '{
  "startUrls": [
    {
      "url": "https://johnsmith-demo.carrd.co"
    },
    {
      "url": "https://janeanderson-demo.carrd.co"
    },
    {
      "url": "https://caycepollard-demo.carrd.co"
    }
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call ahmed_jasarevic/carrd-profile-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ahmed_jasarevic/carrd-profile-scraper"
        }
    }
}

```

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/Kj1uKPoacltfwsd9Y/builds/Zgws0PKUMNEaTQumi/openapi.json
