# DevFest.cz Sponsor Prospector (`kat_raszka/devfest-partners-actor`) Actor

Finds companies likely to sponsor DevFest.cz, based on the developer-recruitment and employer-branding patterns seen in past editions' sponsor lists. Ranks each candidate with a plain-English reason for the match.

- **URL**: https://apify.com/kat\_raszka/devfest-partners-actor.md
- **Developed by:** [Kateřina Raszka](https://apify.com/kat_raszka) (community)
- **Categories:** Lead generation, Marketing
- **Stats:** 2 total users, 1 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

### What does DevFest.cz Sponsor Prospector do?

DevFest.cz Sponsor Prospector finds **companies likely to sponsor DevFest.cz**, the Prague developer conference organized by GUG.cz / the local Google Developer Group. It's built from a direct analysis of the [DevFest.cz](https://devfest.cz), [2025.devfest.cz](https://2025.devfest.cz), and [2019.devfest.cz](https://2019.devfest.cz) partner pages: sponsorship there is driven almost entirely by **developer-recruitment and employer-branding**, not general product marketing.

The Actor runs targeted Google searches (via [Google Search Results Scraper](https://apify.com/apify/google-search-scraper)) across four sponsor archetypes seen in past editions, de-duplicates the companies it finds by domain, and scores each one against the keyword signals that matched real past sponsors - so you get a ranked list of new prospects with a plain-English reason for each match. Optionally, it can also look up a likely outreach contact on LinkedIn (via [LinkedIn Company Employees Scraper](https://apify.com/harvestapi/linkedin-company-employees)) for each top-ranked company.

Run it directly in the Apify Console, via the API, or on a schedule to keep refreshing your sponsorship pipeline.

### Why use DevFest.cz Sponsor Prospector?

- **Skip generic sponsor lists.** Instead of searching "companies that sponsor tech conferences," this Actor targets the exact patterns DevFest.cz sponsors actually fit - dev shops hiring engineers, developer-tool SaaS, recruitment platforms, and enterprises with active tech-hiring arms.
- **Avoid re-pitching existing sponsors.** By default it filters out companies that already sponsored the 2019, 2025, or 2026 editions.
- **Get a reason, not just a name.** Every result includes which keyword signals matched and which past sponsor it resembles (e.g. "fits the same pattern as Applifting, Aricoma...").
- **Reuse it for similar conferences.** Swap the region and categories to prospect for any developer-focused, employer-branding-driven event.
- **Go straight to a contact, not just a company.** Optionally attaches a likely outreach contact (name, title, LinkedIn profile) in Marketing, Employer Branding, HR, DevRel, or Community for each top-ranked company.

### How to use DevFest.cz Sponsor Prospector

1. Click **Try for free** or **Start** in the Apify Console.
2. (Optional) Adjust the **regions** (default: `Czech Republic`) and **categories** to prospect for.
3. (Optional) Add your own **custom search queries** for niches the built-in categories don't cover.
4. Click **Start** and wait for the run to finish - it depends on how many queries are generated (regions × categories × templates).
5. Open the **Dataset** tab to view, sort, and export your ranked list of candidate sponsors.

### Input

| Field | Description | Default |
| --- | --- | --- |
| `regions` | Geographic phrases combined into each search query | `["Czech Republic"]` |
| `categories` | Which sponsor archetypes to search for: `devShops`, `saasTools`, `recruitment`, `enterprise` | all four |
| `customQueries` | Extra free-form Google queries to run alongside the category templates | `[]` |
| `excludeKnownSponsors` | Filter out companies that already sponsored DevFest.cz 2019/2025/2026, based on a hardcoded snapshot | `true` |
| `excludeCurrentPartners` | Fetch [devfest.cz/partners](https://devfest.cz/partners) live and filter out every partner listed there right now | `true` |
| `excludeDomains` | Additional domains to exclude | `[]` |
| `maxPagesPerQuery` | Google result pages to fetch per query (~10 results/page) | `1` |
| `maxResults` | Cap on the final ranked output list | `50` |
| `findContacts` | Look up a likely LinkedIn contact for the top-ranked companies (see [Personal data & compliance](#personal-data--compliance)) | `false` |
| `contactJobTitles` | Job titles/keywords used to filter LinkedIn employees when `findContacts` is on | Marketing, Employer Branding, HR, DevRel, Community titles |
| `maxCompaniesForContactSearch` | How many top-ranked companies to run the LinkedIn contact search for | `10` (max `20`) |

See the **Input** tab for the full schema with descriptions.

### Output

Each dataset item is one candidate company:

```json
{
    "companyName": "Applifting",
    "domain": "applifting.io",
    "website": "https://applifting.io",
    "regionVerified": true,
    "primaryCategory": "Software dev shop / IT services (employer branding)",
    "score": 8,
    "matchedSignals": ["software development", "custom software", "we are hiring"],
    "whyItMightSponsor": "Fits the \"Software dev shop / IT services (employer branding)\" pattern seen in past DevFest.cz sponsors (e.g. Applifting, Aricoma, Second Foundation, Unicorn, FlowUp, Seyfor). Matched signals: software development, custom software, we are hiring.",
    "sampleSnippet": "Applifting builds custom software and helps companies scale their engineering teams...",
    "sourceQueries": ["software development company Czech Republic careers \"hiring developers\""],
    "foundUrls": ["https://applifting.io/en"],
    "contact": {
        "name": "Jane Doe",
        "title": "Marketing Manager at Applifting",
        "linkedinUrl": "https://www.linkedin.com/in/jane-doe-example"
    }
}
```

`contact` is only populated when `findContacts` is enabled and a match was found for that company; otherwise it's `null`.

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

#### Data table

| Field | Description |
| --- | --- |
| `companyName` | Best-effort company name extracted from the search result title |
| `domain` | Root domain, used for de-duplication |
| `website` | Homepage URL |
| `regionVerified` | Whether the search result's own title/description/domain actually mentions the target region (e.g. "Czech", "Prague", a `.cz` domain) - not just that the region name appeared in the *query* that found it. `false` means review manually before treating it as a regional prospect. |
| `primaryCategory` | Sponsor archetype the company scored highest against |
| `score` | Relative ranking score (keyword matches + repeat appearances across queries + a bonus if `regionVerified` is true) |
| `matchedSignals` | Keywords from the winning category that matched the page's title/description |
| `whyItMightSponsor` | Plain-English reasoning, naming comparable past DevFest.cz sponsors |
| `sampleSnippet` | A representative search-result description |
| `sourceQueries` | Which search queries surfaced this company |
| `foundUrls` | All distinct URLs found for this domain |
| `contact` | `{ name, title, linkedinUrl }` for a likely outreach contact, or `null` if `findContacts` is off or no match was found |

### Cost estimation

This Actor doesn't scrape pages itself - it orchestrates other Actors, which charge per unit of work:

- [Google Search Results Scraper](https://apify.com/apify/google-search-scraper) charges per search-results page scraped. With the default settings (4 categories × 1 region × ~2 templates = ~8 queries × 1 page), a run scrapes about 8 pages. Check its [pricing tab](https://apify.com/apify/google-search-scraper/pricing) for the current per-page rate, and multiply by however many queries your `regions` / `categories` / `customQueries` combination produces.
- If `findContacts` is enabled, [LinkedIn Company Employees Scraper](https://apify.com/harvestapi/linkedin-company-employees) additionally charges per LinkedIn profile scraped (around $4 per 1,000 profiles in its cheapest mode, which this Actor uses). With the default `maxCompaniesForContactSearch` of 10, a run scrapes up to ~50 profiles in a single batched search - a few cents. Check its [pricing tab](https://apify.com/harvestapi/linkedin-company-employees/pricing) for the current rate.

### Tips

- Start with the defaults on a single region to gauge quality before scaling up `regions` or `maxPagesPerQuery` - each addition multiplies the number of queries (and cost).
- Set `excludeKnownSponsors` to `false` if you want to see how existing sponsors would score, e.g. to validate the model against known-good matches.
- `excludeCurrentPartners` (live fetch) and `excludeKnownSponsors` (hardcoded snapshot) overlap for the current edition but aren't redundant: the live fetch stays accurate as the current partner roster changes, while the snapshot also covers past editions (2019/2025) that no longer appear on the live partners page.
- Use `customQueries` to prospect adjacent categories not covered by the four built-in archetypes (e.g. a specific industry vertical).
- LinkedIn's own job-title taxonomy varies a lot by company, so `contact` matching is best-effort - not every company will get a hit, and a hit isn't guaranteed to be the ideal person. Treat it as a starting point for outreach, not a verified decision-maker.
- Including `regions` in a search query doesn't guarantee every *result* is actually about that region - a globally-known company can still rank for a Czech-flavored query (e.g. via an unrelated case study or blog mention). Check `regionVerified` before treating a result as a confirmed regional prospect; `false` results are still worth a quick manual look, just not automatically trusted.

### Personal data & compliance

`findContacts` retrieves personal data (a person's name, job title, and LinkedIn profile URL) via a third-party Actor that scrapes LinkedIn. Before enabling it:

- Only use it for a legitimate business purpose (e.g. sponsorship outreach), and handle the data you collect in line with GDPR or your local equivalent.
- Review [LinkedIn Company Employees Scraper](https://apify.com/harvestapi/linkedin-company-employees)'s own documentation and terms, since it - not this Actor - performs the actual LinkedIn scraping.
- Scraping LinkedIn may be subject to LinkedIn's Terms of Service; use at your own discretion.

`findContacts` defaults to `false` so this is always an explicit, opt-in choice.

### FAQ

**Is this scraping Google directly?** No - it calls the [Google Search Results Scraper](https://apify.com/apify/google-search-scraper) Actor, which handles that.

**Is this scraping LinkedIn directly?** No - when `findContacts` is enabled, it calls [LinkedIn Company Employees Scraper](https://apify.com/harvestapi/linkedin-company-employees), which handles that. See [Personal data & compliance](#personal-data--compliance).

**How accurate is the categorization?** Scoring is keyword-based (no LLM call), so treat `primaryCategory` and `score` as a first-pass ranking to prioritize manual review, not a definitive verdict.

**Can I use this for a different conference?** Yes - edit the categories, keywords, and past-sponsor exclusion list in `src/sponsorProfiles.js` to match your event's actual sponsor history.

Found a bug or have a feature request? Open an issue on the Actor's Issues tab.

# Actor input Schema

## `regions` (type: `array`):

Geographic phrases to combine with the search patterns below, e.g. "Czech Republic" or "Prague". More regions = more search queries = higher run cost.

## `categories` (type: `array`):

Based on analysis of past DevFest.cz sponsors (2019/2025/2026 editions), sponsorship there is driven by developer-recruitment and employer-branding, not general product marketing. Pick which sponsor archetypes to prospect for.

## `customQueries` (type: `array`):

Extra free-form Google search queries to run in addition to the category templates above, e.g. "fintech startup Prague hiring developers".

## `excludeKnownSponsors` (type: `boolean`):

Filters out domains of companies that were already Platinum/Diamond/Gold/Silver/media partners in the 2019, 2025, or 2026 editions, based on a hardcoded snapshot taken when this Actor was built.

## `excludeCurrentPartners` (type: `boolean`):

Fetches https://devfest.cz/partners at run time and excludes every partner listed there right now, so results always reflect the latest sponsor roster even if it has changed since this Actor was built.

## `excludeDomains` (type: `array`):

Extra domains to skip in the results (e.g. your own company, competitors already contacted).

## `maxPagesPerQuery` (type: `integer`):

Each page is ~10 organic results. Higher values find more candidates but cost more (billed by the search Actor per page scraped).

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

Caps the final, ranked output list.

## `findContacts` (type: `boolean`):

For the top-ranked companies, searches LinkedIn (via harvestapi/linkedin-company-employees) for a likely sponsorship contact in Marketing, Employer Branding, HR, DevRel, or Community. Adds extra cost and retrieves personal data (name, title, LinkedIn profile URL) - only enable this if you have a legitimate business reason (e.g. sponsorship outreach) and are comfortable with the linked Actor's data-collection practices and LinkedIn's terms.

## `contactJobTitles` (type: `array`):

Job titles/keywords used to filter LinkedIn employees when "Find a LinkedIn contact per company" is on. Broad, short terms tend to match more real-world titles than long specific phrases. Edit to widen or narrow the search.

## `maxCompaniesForContactSearch` (type: `integer`):

How many of the top-ranked companies to run the LinkedIn contact search for. Capped at 20 so the search stays in the LinkedIn Actor's cheaper "all at once" batch mode (a single search covering all companies at once) rather than the pricier per-company mode.

## Actor input object example

```json
{
  "regions": [
    "Czech Republic"
  ],
  "categories": [
    "devShops",
    "saasTools",
    "recruitment",
    "enterprise"
  ],
  "customQueries": [],
  "excludeKnownSponsors": true,
  "excludeCurrentPartners": true,
  "excludeDomains": [],
  "maxPagesPerQuery": 1,
  "maxResults": 50,
  "findContacts": false,
  "contactJobTitles": [
    "Marketing",
    "Employer Branding",
    "HR",
    "Human Resources",
    "People",
    "Talent Acquisition",
    "Recruiting",
    "Developer Relations",
    "DevRel",
    "Developer Advocate",
    "Community"
  ],
  "maxCompaniesForContactSearch": 10
}
```

# Actor output Schema

## `candidateSponsors` (type: `string`):

No description

## `run` (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 = {
    "regions": [
        "Czech Republic"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kat_raszka/devfest-partners-actor").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 = { "regions": ["Czech Republic"] }

# Run the Actor and wait for it to finish
run = client.actor("kat_raszka/devfest-partners-actor").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 '{
  "regions": [
    "Czech Republic"
  ]
}' |
apify call kat_raszka/devfest-partners-actor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kat_raszka/devfest-partners-actor"
        }
    }
}
```

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/4mx8JBHQNjegkFamD/builds/WN1MzdymOYoAhpxx7/openapi.json
