All notable changes to this Actor are documented in this file.
- Brella attendees POST: Request headers aligned with the web app (
cache-control: no-cache, include-extra-schedule-data: true). Body stays on tab: "attendees" (full directory), not matches / show_only_best_matches from the matchmaking UI.
.actor/actor.json: Declared START Summit Brella secrets (BRELLA_*_STARTSUMMIT → @brellaAccessTokenStartsummit, @brellaClientStartsummit, @brellaUidStartsummit) alongside ChangeNOW so cloud runs with "event": "startsummit" resolve credentials like the other preset. Create those three secrets in the Actor settings if missing.
- Store & docs copy: Title, description, and README now align with Brella as an event platform (schedules, networking, meetings) while staying clear this Actor is a third-party export to CSV/Dataset — not an official Brella product. Input/output schema titles and short descriptions updated for the same tone.
exportOptions: Restored default": ["complete_profiles"] alongside prefill — without default, the Console JSON preview often omitted exportOptions even though prefill was set. mode / event stay prefill-only (no default) so the sample still shows those two explicitly.
- Input schema: Removed
default on mode, event, and exportOptions (they were collapsing the JSON sample to almost only exportOptions in the Console). Replaced with prefill + example so the form still opens on Attendees / ChangeNOW / complete profiles while the JSON sample can list all three. Runtime fallbacks remain in code (main.ts, parseExportInput).
- Input schema copy — Shorter, clearer root
description and hidden-field text (no outdated “5 people + prefilled JSON” wording).
exportOptions default: prefill does not apply to the actual run input — replaced with default": ["complete_profiles"] so Console/API merges complete profiles when users only pick mode + event. parseExportInput: missing exportOptions (e.g. local INPUT.json) defaults to the same.
- Input schema / sample JSON: Removed
default from hidden fields (detailConcurrency, detailBatchDelayMs) so the Console JSON sample no longer shows those unless set. pageSize is not part of the schema (removed earlier).
- Prefill (UI only):
maxResults 5, exportOptions ["complete_profiles"] — small enriched test run; omit both for a full export. Root input.json matches.
exportOptions schema: Apify does not allow items.enum when editor is hidden — items is only { "type": "string" }. Allowed values stay documented in README / code (parseExportInput).
exportOptions hidden from Console UI — only Mode and Event remain on the form. Filters / complete profiles: JSON input or API (see README).
- Removed
pageSize from input — list calls always use the Brella API maximum (100 rows per page) and paginate until the full list is loaded. Use optional maxResults only to cap rows (e.g. tests). Default export = everyone (no cap).
- Input UI: Replaced separate checkboxes with a single multiselect (
exportOptions, Apify type: array + editor: select) for all filters and Complete profiles.
- Export options — one multiselect (
exportOptions): row filters (email, website, LinkedIn, company, photo, intro) plus optional Complete profiles. Filters apply after the list load and before the profile step. Legacy JSON booleans and attendeeData / completeProfiles still work.
- Default is quick export (no options selected). Pick Complete profiles in the multiselect when you need the richest file.
- Default run timeout in
actor.json: 3600s (was 7200s).
- Speakers: invalid filter combo (only email/website/LinkedIn) → clear error; those fields are not in speaker rows.
- Run status messages (Apify UI) — English only:
List · pages…, Enrich ·…, rows (replacing French Liste, Enrichissement, lignes).
- SEO / marketplace copy —
actor.json title and description, input/output schema titles and descriptions, README H1 and intro tuned for Brella.io, networking event, and export keywords.
- README — Intro reframed for non-technical readers (what Brella is, spreadsheet download). New Supported events table (ChangeNOW / START Summit, input values, Brella slugs). Who it’s for includes marketing.
- Store title — Emphasizes CSV/Excel and participant lists for marketplace clarity.
- Copy (store + README + input/output schema) — User-benefit wording first; technical / API detail moved to Developers only where needed.
- Dataset:
pushData receives arrays (list-only attendees + enrich batches + speakers) — fewer round trips than per-row pushes.
- Speakers: pages fetched in parallel waves (same strategy as attendee list), not strictly sequential.
- List waves: batch size 20 pages, inter-wave delay 0 ms (was 12 / 25 ms).
- Detail phase: default concurrency 120, cap 300 (was 80 / 200).
.actor/actor.json — Only ChangeNOW secrets are declared for apify push. START Summit env vars must be added in the Apify Console when needed, or use apify push --allow-missing-secrets if you restore both presets in actor.json.
- Default detail concurrency raised 40 → 80; no delay between detail batches by default (was 50 ms).
- List fetch: batch size 10 → 12 pages per wave; inter-wave delay 50 → 25 ms.
- Dataset push: detail phase uses parallel
pushData per batch.
- Input
attendeeData: full (default) or list — skips all per-attendee detail GETs (~N requests); use when email/photo from the detail endpoint are not needed (often ~10× faster on large attendee lists).
- Optional
detailConcurrency (1–200, default 80) and detailBatchDelayMs (hidden) for tuning if Brella returns 429.
- README — Full marketplace-style rewrite: why use it, field reference, how to run, configuration, audiences, developers, legal (aligned with Apify Store best practices).
- Actor version — Apify accepts only
MAJOR.MINOR in .actor/actor.json (not 1.4.2); use 1.5 for this release.
- Input UX — End users only choose Mode (Attendees / Speakers) and Event (ChangeNOW / START Summit). Org slug, event slug, and credential segment come from built-in
EVENT_PRESETS in main.ts.
- Secrets — Runs use suffixed env only:
BRELLA_*_CHANGENOW and BRELLA_*_STARTSUMMIT. Default unsuffixed BRELLA_* removed from actor.json (no longer used for the two-preset flow).
segmentId input — When set (e.g. changenow), credentials are read only from BRELLA_ACCESS_TOKEN_<SUFFIX>, BRELLA_CLIENT_<SUFFIX>, BRELLA_UID_<SUFFIX> (suffix = uppercased, normalized). No fallback to unsuffixed BRELLA_*, so multiple Brella sessions can coexist on one Actor without mixing.
- Startup log —
credentialEnv shows which env keys were used; segmentId logged when present.
- README explains that each uid + client + token triple is one Brella session with access limited to events that login may see; segments separate customers/events.
- Actor identity: name
brella-event-profiles, title Brella Event Profiles, generic marketplace description (any Brella org/event).
- Input schema:
organizationSlug and eventSlug visible in the Console; defaults changenow / ChangeNOW2026; optional maxResults and pageSize documented.
- Code defaults: same defaults as input schema for local runs without JSON input.
- README: shortened, multi-event focused; removed SmartSummit-only wording.
- package.json: name aligned with Actor slug.
- maxResults now applies to the first page of attendees (previously only later pages were capped).
Renaming the Apify Actor (startsummit-brella-attendees → brella-event-profiles) creates a new store entry when pushed; republish or duplicate settings as needed.
- Mode: speakers — Extract conference speakers via GET /events/{slug}/speakers (in addition to attendees)
- Environment variables — Apify secrets:
brellaAccessToken, brellaClient, brellaUid (Actor Settings → Environment variables). Credentials can come from input or env.
- role field in output —
attendee or speaker to distinguish records
- Input schema: mode dropdown (Attendees / Speakers), optional credentials when using Apify secrets
- Default event: startsummitxhack2026 (SmartSummit Hack 2026)
- README updated with modes table, env vars, speakers mode
- Extract attendees from Brella events via API
- Session headers authentication (access-token, client, uid)
- POST-based API calls matching Brella web app format
- Full pagination (100 attendees per page)
- Detail enrichment (imageUrl, email from attendee detail endpoint)
- Output: fullName, email, companyName, companyTitle, persona, jobFunction, industry, pitch, interests, linkedin, profileUrl
- CSV export for local runs (semicolon-separated, Excel-compatible)
- Support for SmartSummit Hack 2026 and any Brella event (organizationSlug, eventSlug)
- Parallel list fetching (5 pages per batch)
- Parallel detail enrichment (15 concurrent)
- Dataset push with proper await for Apify cloud
- No line breaks in CSV fields
- TypeScript, Apify SDK, Node 20