Privacy Policy

Version 1 — the same document you accept at signup.

Privacy Policy

Effective version: 1 Last updated: 2026-05-19

> ⚠️ PLACEHOLDER. Replace this file with your real Privacy Policy before > public launch. The acceptance machinery (version checking, force re-accept, > audit trail) is fully implemented — the content is your responsibility, > and you should have a lawyer review the final version. When you change the > document materially, bump `PRIVACY_CURRENT_VERSION` in > `apps/api/app/core/legal.py` so existing users are forced to re-accept.

1. What we collect

- Account data: email, name (if provided), password hash, OAuth subject IDs for connected providers, MFA secret + recovery codes (encrypted at rest), audit log of authentication events. - Usage data: scraper configurations, scheduled job definitions, input parameters, scraped items, run logs, export records, notification preferences, limit-increase requests, audit log of admin actions. - Technical data: IP address (audit log only), user-agent header (audit log only), session tokens (Redis only, expire in 7 days).

2. How we use it

- To operate the Service: authenticate you, execute your scraping jobs, store scraped items, enforce quotas, deliver notifications. - To prevent abuse: rate-limit suspicious traffic, lock accounts after repeated failed login attempts, respond to complaints from third parties whose sites you target. - To improve the Service: aggregate metrics (e.g. queue depth, success rates). We do not sell aggregate or individual user data to anyone.

3. Where it lives

- Database: PostgreSQL (TimescaleDB). - Object storage: S3-compatible (MinIO in development; Backblaze B2 in production) for export files. - Cache: Redis for session denylist, rate limits, and idempotency.

All databases are encrypted at rest; backups are encrypted and stored in the same provider as our primary infrastructure.

4. Your rights

- Access: download a copy of all data we have about you from the Settings → Privacy tab. - Deletion: initiate account deletion from the same tab. Your account becomes inactive immediately; all data is hard-deleted after a 30-day grace window, during which you can cancel. - Correction: edit your profile from Settings → Profile. - Portability: the data export includes JSON files suitable for machine ingestion.

If you are in the EEA, UK, or another jurisdiction with similar rights (CCPA, LGPD, etc.), the rights above apply to you as well.

5. Cookies

The Service uses cookies only for authentication (a single `scrapeora_refresh` cookie holding your refresh token). We do not set analytics, advertising, or third-party tracking cookies.

5a. AI & data processing (optional enrichment)

AI enrichment is an optional feature. It is fully separate from scraping:

- Scraping performs no AI processing. When the Service scrapes a site, no scraped data is sent to any AI or LLM provider. Scraping, exports, and pushing to destinations all work without any AI configured. - Enrichment is opt-in and runs only after scraping, and only when you explicitly trigger it on a finished run. There is no automatic AI processing. - You bring your own AI provider key. When you run enrichment, the Service sends that run's already-scraped product data to the LLM provider you chose and connected (e.g. OpenAI, Anthropic, Google Gemini, DeepSeek), using your API key, under that provider's terms and privacy policy. Their handling of that data is governed by your agreement with them. - We never use our own AI keys and never process your data with AI unless you opt in. Your API key is encrypted at rest and never shown after you save it. - What we log: for each enrichment run we keep a metadata-only record (which provider/model, which run, item count, timestamp) for your compliance trail. We do not store a separate copy of the content sent to the AI — the scraped items already live in your account.

6. Third parties

- Google OAuth: if you sign in with Google, Google receives the authentication request and we receive your email + subject ID. - Proxy provider (Webshare): routes outbound scraping traffic. Webshare does not see your account identity — only the requests your scrapers make. - Email provider (Resend / Brevo in production): receives the email address + content of transactional emails we send you.

7. Contact

Email the operator at `toufiq.py@gmail.com` for any privacy-related request. Responses within 30 days of receipt.