An open-source data crawling and intelligence platform that lets you crawl, classify, and analyze people and company data. Customize crawling processes without coding, create custom tags and classifications using generative AI, and gain insights through AI-driven analytics.
Thanks to its revolutionary Saasufy backend, CrawlKeep is open and flexible unlike any other platform of its kind. You can either set up your own fully isolated instance/distro with its own accounts, schema and data from scratch or you can opt in to share everything with the main CrawlKeep distro and community.
You should think about which aspect you want differentiate yourself on; the crawling, the keeping or both? For example, your distro could end up having a very different crawling mechanism and UI but it could be hooked into the main/shared CrawlKeep backend and tapping into existing accounts and data; potentially sharing that data with other trusted distros... Or your distro could have the same crawling mechanism and UI as the main CrawlKeep distro but its data would be fully isolated into a separate Saasufy instance... Or you can do both!
Because CrawlKeep is a frontend-only application with a fully managed backend, the entire product surface is ordinary HTML, CSS, and JavaScript — exactly the kind of code that AI coding tools excel at generating and modifying. This means anyone, regardless of technical skill, can use tools like Claude Code to reshape the UI, add dashboards, build new workflows, or create an entirely new distro without ever touching backend infrastructure, writing database migrations, or worrying about security vulnerabilities in server-side code. The backend handles authentication, data storage, real-time communication, and AI scoring so you can focus entirely on making the product your own.
- Crawl and store people and company profiles
- AI-powered classification and tagging
- Custom tag taxonomies
- Analytics dashboards (people, company, network, competitive intelligence)
- Data export and import (including Excel)
- Chrome extension for on-page data capture
- Google OAuth authentication
CrawlKeep is a frontend-only application that connects to a Saasufy backend for data storage and real-time communication. You do not need to create or operate your own backend server. By default, the app hooks into the main Saasufy backend.
If you want full control over your own data and collections, you can create a free account on saasufy.com, then go to the Models section of the control panel and import the saasufy-schema-latest.json file included in this repo. This will set up all the required data models and collections for your own instance.
- Node.js (v18 or later recommended) — used to run the HTTP server. Alternatively, any other HTTP server can be used (e.g. Nginx, Apache, or Caddy)
- Git — to clone the repository
- A Google Cloud project with OAuth 2.0 credentials
git clone https://github.com/jondubois/crawlkeep.git
cd crawlkeepServe the public/ directory on port 8081 using any HTTP server. For example, using http-server:
npx http-server public -p 8081The app will be available at http://localhost:8081/app/.
CrawlKeep uses Google OAuth for user authentication. You need to create OAuth 2.0 credentials in the Google Cloud Console and configure the correct redirect URIs.
- Go to the Google Cloud Console.
- Create a new project or select an existing one.
- Navigate to APIs & Services > Credentials (direct link).
- Click Create Credentials > OAuth client ID.
- Select Web application as the application type.
- Under Authorized redirect URIs, add the redirect URI that matches your setup. For example, if you're serving on port 8081:
For production, add your domain-based URI as well (e.g.
http://localhost:8081/app/oauth.htmlhttps://yourdomain.com/app/oauth.html). - Click Create and note your Client ID.
For more details, see the Google OAuth 2.0 documentation and the Setting up OAuth 2.0 guide.
Before users can authenticate, you also need to configure the OAuth consent screen:
- Go to APIs & Services > OAuth consent screen (direct link).
- Choose External (or Internal if using Google Workspace).
- Fill in the required app information and save.
See the OAuth consent screen documentation for more details.
Open public/app/config.js and replace the clientId and redirectURI values under the dev and/or prod keys with your own:
dev: {
oauth: {
google: {
redirectURI: 'http://localhost:8081/app/oauth.html',
clientId: 'YOUR_CLIENT_ID.apps.googleusercontent.com'
}
}
},Make sure the redirectURI here matches exactly what you entered in the Google Cloud Console.
By default, CrawlKeep connects to the shared Saasufy backend, which includes the parsing and AI scoring endpoints. It is recommended that you use the defaults.
If you want your own isolated instance with full control over your data:
- Create an account at saasufy.com.
- Open the Models section in the Saasufy control panel.
- Import the
saasufy-schema-latest.jsonfile from the root of this repo. This creates all the required data models and collections. - Update the WebSocket URL in
public/app/index.htmlandpublic/app/oauth.htmlto point to your own Saasufy service ID.
You can also use Claude Code with the Saasufy skills marketplace to help you set up and administer your Saasufy instance. Claude can be given direct access to your Saasufy control panel to add or modify your backend schema, access rules or to manipulate data directly.
public/ Frontend application (serve this directory)
app/ Main SPA application
config.js OAuth and app configuration
oauth.html OAuth callback handler
chrome-extension/ Chrome extension for on-page data capture