# GoFundMe Fundraiser Scraper (`shahidirfan/gofundme-fundraiser-scraper`) Actor

Extract GoFundMe fundraiser data instantly: campaign details, goals, raised amounts, locations & donor activity. Scrape at scale for research, competitive analysis & fundraising insights. Perfect for nonprofits, investors & market researchers.

- **URL**: https://apify.com/shahidirfan/gofundme-fundraiser-scraper.md
- **Developed by:** [Shahid Irfan](https://apify.com/shahidirfan) (community)
- **Categories:** Developer tools, Lead generation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN 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/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

## GoFundMe Fundraiser Scraper

Collect fundraiser listings from GoFundMe search pages in a consistent, analysis-ready dataset. Extract fundraiser titles, organizer names, donation progress, currency, and direct fundraiser links with support for keyword queries, URL-based searches, and location-aware discovery.

Use it for lead generation, fundraising trend research, donation momentum tracking, and market monitoring across public fundraiser campaigns.

### Features

- **Keyword and URL workflows** - Run with a search keyword or paste a full GoFundMe search URL.
- **Location-only support** - Run with just a location to collect nearby or regional fundraiser results.
- **Location-aware collection** - Narrow discovery using city, country, or coordinates.
- **Pagination control** - Define result volume with `results_wanted` and `max_pages`.
- **Clean dataset output** - Stores structured records without empty or null-only fields.
- **Production-safe defaults** - Ready for daily runs, monitoring tasks, and scheduled jobs.
- **Resilient search continuity** - Automatically recovers search connectivity during provider-side credential rotations.

### Use Cases

#### Fundraising Trend Monitoring
Track which fundraising themes are growing and which causes attract sustained donor interest. Build recurring snapshots to monitor changes over time.

#### Competitive Benchmarking
Compare campaign traction across different regions and categories. Review donation momentum and fundraiser positioning with normalized fields.

#### Lead Discovery
Find active campaigns and organizer profiles for outreach, partnerships, or nonprofit intelligence workflows.

#### Market Research
Analyze donation behavior, campaign naming patterns, and localization differences for strategic planning.

---

### Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `url` | String | No | `"https://www.gofundme.com/s/fundraisers?q=medical"` | Full GoFundMe search URL. If present, this is used first. |
| `keyword` | String | No | `"medical"` | Search term used when `url` is not provided. |
| `location` | String | No | `"New York, USA"` | Optional location (city/country or `lat,lng`) for location-aware results. |
| `results_wanted` | Integer | No | `20` | Maximum number of records to save. |
| `max_pages` | Integer | No | `5` | Maximum number of pages to process. |
| `proxyConfiguration` | Object | No | `{ "useApifyProxy": true }` | Optional proxy configuration for reliable access. |

---

### Output Data

Each dataset item includes standardized campaign details and source fields.

| Field | Type | Description |
|-------|------|-------------|
| `fundraiser_id` | String | Unique fundraiser identifier. |
| `title` | String | Fundraiser title. |
| `organizer_name` | String | Organizer display name. |
| `beneficiary_name` | String | Beneficiary name when available. |
| `location` | String | Campaign location text when available. |
| `amount_raised` | Number | Amount raised in campaign currency. |
| `amount_to_goal` | Number | Remaining amount to reach goal. |
| `goal_progress` | Number | Progress ratio toward campaign goal. |
| `currency` | String | Currency code. |
| `donation_count` | Number | Donation count. |
| `fundraiser_slug` | String | Campaign slug. |
| `fundraiser_url` | String | Direct fundraiser URL. |
| `search_query` | String | Query used for the run. |
| `page` | Number | Search page number where result was collected. |
| `rank_on_page` | Number | Position within that page. |
| `scraped_at` | String | ISO timestamp when the record was saved. |

---

### Usage Examples

#### Example 1: Basic Keyword Search

```json
{
  "keyword": "medical",
  "results_wanted": 50,
  "max_pages": 5
}
````

#### Example 2: URL-Based Search

```json
{
  "url": "https://www.gofundme.com/s/fundraisers?q=education",
  "results_wanted": 40,
  "max_pages": 4
}
```

#### Example 3: Keyword + Location Search

```json
{
  "keyword": "accident",
  "location": "Los Angeles, USA",
  "results_wanted": 30,
  "max_pages": 6,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

***

### Sample Output

```json
{
  "fundraiser_id": "96987861",
  "title": "Support Brandon Buckingham's Medical Recovery",
  "organizer_name": "Brandon Buckingham",
  "amount_raised": 342525,
  "amount_to_goal": 0,
  "goal_progress": 4.567,
  "currency": "USD",
  "donation_count": 11028,
  "fundraiser_slug": "support-brandon-buckinghams-medical-recovery",
  "fundraiser_url": "https://www.gofundme.com/f/support-brandon-buckinghams-medical-recovery",
  "search_query": "medical",
  "page": 1,
  "rank_on_page": 1,
  "scraped_at": "2026-05-20T16:00:00.000Z"
}
```

***

### Tips for Best Results

#### Start Small Then Scale

- Start with `results_wanted: 20` and `max_pages: 3` to validate quickly.
- Increase limits after confirming output quality for your target search.

#### Use Precise Search Terms

- Specific keywords typically produce cleaner campaign sets.
- Try multiple focused runs instead of one broad query.

#### Improve Consistency With Proxy

- Enable proxy configuration for repeated production runs.
- Use the same input profile for scheduled monitoring to keep data comparable.

#### Prefer Full Search URLs For Repeatability

- URL-based runs preserve search context and filters.
- Reusing tested URLs helps keep recurring exports consistent.

***

### Integrations

Connect output with:

- **Google Sheets** - Share fundraiser snapshots with teams.
- **Airtable** - Build searchable fundraising intelligence bases.
- **Make** - Trigger downstream workflows and notifications.
- **Zapier** - Connect campaign updates to business systems.
- **Webhooks** - Send results to custom pipelines.

#### Export Formats

- **JSON** - Application and backend workflows.
- **CSV** - Spreadsheet analysis.
- **Excel** - Reporting and stakeholder sharing.
- **XML** - Legacy system integration.

***

### Frequently Asked Questions

#### Can I run this scraper with only a URL?

Yes. Provide `url` and the actor will use it directly.

#### Can I run this scraper with only a keyword?

Yes. Provide `keyword` and it will search from the main fundraiser search flow.

#### Can I run this scraper with only a location?

Yes. Provide `location` and the actor can collect location-focused fundraiser results even without a keyword.

#### What happens if I provide both `url` and `keyword`?

The `url` input is used first to preserve that exact search context.

#### Can I limit total runtime and result size?

Yes. Use `results_wanted` and `max_pages` together to control run size.

#### Why do some records have fewer fields?

Public campaign data can vary by listing. The actor saves only available fields for each result.

#### Is this suitable for scheduled daily monitoring?

Yes. The actor is designed for recurring runs with consistent, structured output.

#### What if search connectivity changes on the source side?

The actor includes automatic recovery logic to keep runs stable when search provider credentials rotate.

***

### Support

For issues or feature requests, contact support through the Apify Console.

#### Resources

- [Apify Documentation](https://docs.apify.com/)
- [Apify API Reference](https://docs.apify.com/api/v2)
- [Apify Scheduling](https://docs.apify.com/platform/schedules)

***

### Legal Notice

This actor is intended for lawful data collection and analysis workflows. You are responsible for ensuring your use complies with applicable laws and platform terms.

# Actor input Schema

## `url` (type: `string`):

Optional GoFundMe search URL, e.g. https://www.gofundme.com/s/fundraisers?q=medical. If provided, this input is used first.

## `keyword` (type: `string`):

Keyword to search fundraisers by title or related text (used when URL is not provided).

## `location` (type: `string`):

Optional location like city/country (for example: New York, USA) or lat,lng (for example: 40.7128,-74.0060).

## `results_wanted` (type: `integer`):

Maximum number of fundraiser records to save.

## `max_pages` (type: `integer`):

Maximum search pages to request.

## `proxyConfiguration` (type: `object`):

Optional proxy setup for search requests.

## Actor input object example

```json
{
  "url": "https://www.gofundme.com/s/fundraisers?q=medical",
  "keyword": "medical",
  "location": "New York, USA",
  "results_wanted": 20,
  "max_pages": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (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 = {
    "url": "https://www.gofundme.com/s/fundraisers?q=medical",
    "keyword": "medical",
    "location": "New York, USA",
    "results_wanted": 20,
    "max_pages": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("shahidirfan/gofundme-fundraiser-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 = {
    "url": "https://www.gofundme.com/s/fundraisers?q=medical",
    "keyword": "medical",
    "location": "New York, USA",
    "results_wanted": 20,
    "max_pages": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("shahidirfan/gofundme-fundraiser-scraper").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 '{
  "url": "https://www.gofundme.com/s/fundraisers?q=medical",
  "keyword": "medical",
  "location": "New York, USA",
  "results_wanted": 20,
  "max_pages": 5
}' |
apify call shahidirfan/gofundme-fundraiser-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=shahidirfan/gofundme-fundraiser-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "GoFundMe Fundraiser Scraper",
        "description": "Extract GoFundMe fundraiser data instantly: campaign details, goals, raised amounts, locations & donor activity. Scrape at scale for research, competitive analysis & fundraising insights. Perfect for nonprofits, investors & market researchers.",
        "version": "0.0",
        "x-build-id": "fzYI79Yg4i6Tvb1c1"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/shahidirfan~gofundme-fundraiser-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-shahidirfan-gofundme-fundraiser-scraper",
                "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/shahidirfan~gofundme-fundraiser-scraper/runs": {
            "post": {
                "operationId": "runs-sync-shahidirfan-gofundme-fundraiser-scraper",
                "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/shahidirfan~gofundme-fundraiser-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-shahidirfan-gofundme-fundraiser-scraper",
                "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": {
                    "url": {
                        "title": "Search URL",
                        "type": "string",
                        "description": "Optional GoFundMe search URL, e.g. https://www.gofundme.com/s/fundraisers?q=medical. If provided, this input is used first."
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Keyword to search fundraisers by title or related text (used when URL is not provided)."
                    },
                    "location": {
                        "title": "Location",
                        "type": "string",
                        "description": "Optional location like city/country (for example: New York, USA) or lat,lng (for example: 40.7128,-74.0060)."
                    },
                    "results_wanted": {
                        "title": "Results wanted",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of fundraiser records to save.",
                        "default": 20
                    },
                    "max_pages": {
                        "title": "Max pages",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum search pages to request.",
                        "default": 5
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Optional proxy setup for search requests.",
                        "default": {
                            "useApifyProxy": false
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
