Skip to main content
RapidDev - Software Development Agency
retool-integrationsDevelopment Workflow

How to Integrate Retool with Screaming Frog SEO Spider

Screaming Frog is a desktop SEO crawler with no REST API. Connect it to Retool by importing crawl data exports (CSV or XLSX) via file upload or database storage, then build crawl analysis dashboards in Retool. For automated workflows, use Screaming Frog's CLI with Retool Workflows to schedule crawls and import results on a recurring basis.

What you'll learn

  • How to export Screaming Frog crawl data and import it into a Retool-connected database
  • How to build a technical SEO audit dashboard using crawl data stored in PostgreSQL or Retool Database
  • How to use JavaScript transformers to categorize and prioritize SEO issues in Retool
  • How to automate Screaming Frog CLI crawls and import results using Retool Workflows
  • How to combine Screaming Frog crawl data with Google Search Console data in a unified SEO panel
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Advanced18 min read45 minutesSEOLast updated April 2026RapidDev Engineering Team
TL;DR

Screaming Frog is a desktop SEO crawler with no REST API. Connect it to Retool by importing crawl data exports (CSV or XLSX) via file upload or database storage, then build crawl analysis dashboards in Retool. For automated workflows, use Screaming Frog's CLI with Retool Workflows to schedule crawls and import results on a recurring basis.

Quick facts about this guide
FactValue
ToolScreaming Frog SEO Spider
CategorySEO
MethodDevelopment Workflow
DifficultyAdvanced
Time required45 minutes
Last updatedApril 2026

Build a Screaming Frog Crawl Analysis Dashboard in Retool

Screaming Frog SEO Spider is the industry-standard technical SEO crawler, used by SEO teams and agencies worldwide to identify issues like broken links, redirect chains, missing title tags, duplicate content, and page speed problems. However, Screaming Frog is a desktop application — there is no REST API, and its built-in reporting, while powerful, is limited to the Screaming Frog interface itself. Sharing crawl findings with developers, content teams, or clients requires exporting data and working with spreadsheets.

Retool solves this by serving as a centralized SEO operations center where crawl data is imported once and then made available to multiple teams through configurable dashboards. By storing Screaming Frog exports in a PostgreSQL database or Retool Database, your SEO team can build interactive crawl analysis panels that filter issues by type, sort by SEO priority, track issue resolution over time, and combine crawl data with Google Search Console performance metrics to prioritize which technical issues have the greatest impact on organic traffic.

For teams running Screaming Frog on a schedule, the Screaming Frog CLI (included with licensed versions) enables automated headless crawls that generate output files. Combined with a Retool Workflow, you can build a fully automated pipeline: trigger a crawl via CLI, parse the output, and insert results into your database — creating a historical record of technical SEO health that your Retool dashboard displays over time.

Integration method

Development Workflow

Screaming Frog does not have a REST API. Integration with Retool follows a data import pattern: export crawl results as CSV or XLSX from the Screaming Frog desktop application, upload the file to Retool or store it in a connected database, then build analysis dashboards using Retool's query and visualization capabilities. For automated recurring crawls, the Screaming Frog CLI can be combined with Retool Workflows and a database to fully automate the import pipeline.

Prerequisites

  • Screaming Frog SEO Spider installed on your machine (free version crawls up to 500 URLs; paid license required for larger sites)
  • A database accessible from Retool — PostgreSQL, MySQL, or Retool Database — where crawl exports will be stored
  • A Retool account with permission to create Resources and edit apps
  • For CLI automation: a Screaming Frog licensed version with CLI access enabled
  • Basic SQL knowledge for querying imported crawl data in Retool's query editor

Step-by-step guide

1

Export crawl data from Screaming Frog and prepare the database table

Run a crawl in Screaming Frog SEO Spider by opening the application, entering your target URL in the address bar, and clicking Start. Wait for the crawl to complete. Once finished, export the data by going to File → Export → All Export Tabs as CSV or using the Bulk Export option. The most useful exports for an SEO dashboard are: All Inlinks (every link on the site), Response Codes (pages grouped by HTTP status code), Redirects (all redirect chains), and Page Titles (all pages with their title tag data). Before importing into Retool, you need a database table to store the crawl data. If you're using Retool Database (the managed PostgreSQL), go to the Retool Database tab in your Retool instance and create a new table named crawl_data. If using your own PostgreSQL, create the table via your SQL client. The recommended schema for a unified crawl table is: id (serial primary key), crawl_date (date), address (text), content_type (text), status_code (integer), status (text), indexability (text), title_1 (text), meta_description_1 (text), h1_1 (text), word_count (integer), response_time (numeric), redirect_uri (text), canonical_link_element (text), crawl_depth (integer). This schema covers the most commonly needed fields from Screaming Frog's Internal tab export. Alternatively, use the simpler approach of importing the CSV directly. Screaming Frog's Internal tab export contains the most comprehensive page-level data and maps directly to this schema.

create_crawl_table.sql
1-- SQL to create the crawl_data table in PostgreSQL or Retool Database
2CREATE TABLE IF NOT EXISTS crawl_data (
3 id SERIAL PRIMARY KEY,
4 crawl_date DATE NOT NULL DEFAULT CURRENT_DATE,
5 address TEXT NOT NULL,
6 content_type TEXT,
7 status_code INTEGER,
8 status TEXT,
9 indexability TEXT,
10 indexability_status TEXT,
11 title_1 TEXT,
12 title_1_length INTEGER,
13 meta_description_1 TEXT,
14 meta_description_1_length INTEGER,
15 h1_1 TEXT,
16 h1_2 TEXT,
17 word_count INTEGER,
18 response_time NUMERIC,
19 redirect_uri TEXT,
20 canonical_link_element TEXT,
21 crawl_depth INTEGER,
22 inlinks INTEGER,
23 unique_inlinks INTEGER,
24 created_at TIMESTAMP DEFAULT NOW()
25);
26
27-- Index for fast filtering by date and status
28CREATE INDEX idx_crawl_date ON crawl_data(crawl_date);
29CREATE INDEX idx_status_code ON crawl_data(status_code);
30CREATE INDEX idx_indexability ON crawl_data(indexability);

Pro tip: Add a crawl_date column to every row when importing so you can compare crawls over time. Screaming Frog exports don't include a date, so you'll add it at import time based on when you ran the crawl. This enables month-over-month comparisons in your Retool dashboard.

Expected result: The crawl_data table exists in your database with the correct schema. The date indexes are in place for fast filtering in the Retool dashboard queries.

2

Import Screaming Frog CSV exports into the database

With your database table created, import the Screaming Frog CSV export. There are three approaches depending on your database setup and automation needs. Approach 1 — Direct PostgreSQL COPY (fastest for one-time imports): If you have direct access to your PostgreSQL server, use the COPY command to bulk-insert the CSV. Remove the header row from the CSV file first (Screaming Frog includes column headers), then run the COPY command pointing to your file. Approach 2 — Retool Database CSV import (easiest for Retool Database users): In the Retool Database interface, navigate to your crawl_data table, click Import Data, and upload the CSV file directly. Retool Database handles the column mapping automatically based on header names. Before importing, edit the CSV headers to match your table column names exactly. Approach 3 — Retool app file upload (most flexible for recurring imports): Build a simple Retool app with a File Button component that allows your SEO team to upload a new CSV after each crawl. Use a JavaScript query to parse the uploaded CSV and insert rows into the database via a parameterized INSERT query. This creates a self-service import tool that doesn't require database access. For all approaches, after importing, run a quick verification query in Retool to confirm the row count: SELECT COUNT(*), crawl_date FROM crawl_data GROUP BY crawl_date ORDER BY crawl_date DESC LIMIT 10. Confirm the expected number of rows for the latest crawl date.

import_crawl.sql
1-- SQL for importing a specific crawl date's data
2-- Run this after copying CSV data into a temporary import table
3INSERT INTO crawl_data (
4 crawl_date, address, content_type, status_code, status,
5 indexability, title_1, title_1_length, meta_description_1,
6 meta_description_1_length, h1_1, word_count,
7 response_time, redirect_uri, canonical_link_element,
8 crawl_depth, inlinks, unique_inlinks
9)
10SELECT
11 '{{ currentCrawlDate }}'::date,
12 address, content_type,
13 NULLIF(status_code, '')::integer,
14 status, indexability, title_1,
15 NULLIF(title_1_length, '')::integer,
16 meta_description_1,
17 NULLIF(meta_description_1_length, '')::integer,
18 h1_1,
19 NULLIF(word_count, '')::integer,
20 NULLIF(response_time, '')::numeric,
21 redirect_uri, canonical_link_element,
22 NULLIF(crawl_depth, '')::integer,
23 NULLIF(inlinks, '')::integer,
24 NULLIF(unique_inlinks, '')::integer
25FROM crawl_import_staging;

Pro tip: Create a staging table (crawl_import_staging) with all TEXT columns for the initial CSV import, then use a typed INSERT SELECT to move data into the final crawl_data table with proper types. This avoids type conversion errors on rows where numeric fields are empty.

Expected result: The crawl_data table contains rows for the imported crawl date. A verification SELECT COUNT(*) query returns the expected number of pages crawled.

3

Build the SEO issue analysis dashboard in Retool

With crawl data in your database, create the core SEO analysis dashboard in Retool. Connect to your database by adding it as a Resource in the Resources tab — select PostgreSQL (or Retool Database if applicable) and configure the connection credentials. Create a query named getCrawlSummary that produces an issue summary by status code and issue type: This query powers a summary stat panel at the top of your dashboard. Add Stat components showing: total pages crawled (all rows for the latest crawl date), broken links (status_code = 404), server errors (status_code >= 500), redirect pages (status_code IN (301,302,307)), non-indexable pages (indexability != 'Indexable'), and pages with missing title tags (title_1 IS NULL OR title_1 = ''). Create a second query named getIssueList that retrieves individual pages matching the currently selected issue type. Add a Select component named select_issue_type with options: 'All Issues', '4xx Errors', '5xx Errors', 'Redirects', 'Missing Title', 'Missing Meta Description', 'Duplicate Title', 'Non-Indexable'. The getIssueList query uses a CASE or WHERE clause based on the selected option. Bind getIssueList results to a Table component with columns for URL, status code, issue type, title, meta description, crawl depth, and inlink count. Add a Text Input filter for URL pattern matching. Sort by inlink count descending by default so high-authority pages with issues appear first — this helps prioritize which issues to fix based on internal link equity.

query.sql
1-- SQL query: getCrawlSummary issue counts for latest crawl date
2SELECT
3 crawl_date,
4 COUNT(*) AS total_pages,
5 COUNT(*) FILTER (WHERE status_code BETWEEN 200 AND 299) AS ok_pages,
6 COUNT(*) FILTER (WHERE status_code BETWEEN 300 AND 399) AS redirect_pages,
7 COUNT(*) FILTER (WHERE status_code = 404) AS not_found,
8 COUNT(*) FILTER (WHERE status_code >= 500) AS server_errors,
9 COUNT(*) FILTER (WHERE indexability = 'Indexable') AS indexable_pages,
10 COUNT(*) FILTER (WHERE indexability != 'Indexable' AND status_code = 200) AS blocked_pages,
11 COUNT(*) FILTER (WHERE (title_1 IS NULL OR title_1 = '') AND status_code = 200) AS missing_title,
12 COUNT(*) FILTER (WHERE (meta_description_1 IS NULL OR meta_description_1 = '') AND status_code = 200) AS missing_meta,
13 COUNT(*) FILTER (WHERE title_1_length > 60 AND status_code = 200) AS title_too_long,
14 COUNT(*) FILTER (WHERE word_count < 300 AND status_code = 200 AND indexability = 'Indexable') AS thin_content
15FROM crawl_data
16WHERE crawl_date = (
17 SELECT MAX(crawl_date) FROM crawl_data
18)
19GROUP BY crawl_date;

Pro tip: Filter your issue queries to status_code = 200 pages when analyzing on-page SEO issues like missing titles or thin content — there's no point flagging title issues on 404 or redirect pages. Reserve status code-based filters for crawlability reports.

Expected result: The dashboard summary panel shows issue counts for the latest crawl. The issue table populates with specific pages matching the selected issue type, sorted by internal link equity so the most important pages appear first.

4

Add crawl comparison view for trend tracking

Build a crawl comparison view that shows how SEO health has changed between crawls. This is where storing historical crawl data in your database pays off. Create a query named getCrawlHistory that retrieves issue counts for all stored crawl dates: Bind this to a Chart component configured as a multi-series line chart with crawl_date on the x-axis. Add separate series for not_found count, redirect_pages count, missing_title count, and indexable_pages count. This visualizes whether technical SEO health is improving with each site update. Create a query named compareCrawls that compares two selected crawl dates side by side: Add two Date Select components (select_date_1 and select_date_2) to allow users to choose which two crawl dates to compare. The compareCrawls query joins the two dates and calculates deltas — positive deltas for broken links and missing titles are bad (shown in red), positive deltas for indexable pages are good (shown in green). For the URL-level comparison — specific pages that changed status between crawls — create a query named getStatusChanges that finds pages where status_code changed between the two selected dates. This is the most actionable report for developers: pages that became 404 after a deploy, or pages that were fixed between crawls. Add a download button that exports the current filtered issue list as a CSV using Retool's built-in table download feature, so SEO managers can share specific issue lists with developers or clients.

query.sql
1-- SQL query: getStatusChanges pages that changed status between two crawl dates
2SELECT
3 c1.address,
4 c1.status_code AS old_status,
5 c2.status_code AS new_status,
6 c1.title_1 AS title,
7 c1.inlinks AS inlink_count,
8 CASE
9 WHEN c1.status_code = 200 AND c2.status_code != 200 THEN 'BROKEN'
10 WHEN c1.status_code != 200 AND c2.status_code = 200 THEN 'FIXED'
11 WHEN c1.status_code != c2.status_code THEN 'CHANGED'
12 ELSE 'SAME'
13 END AS change_type
14FROM crawl_data c1
15JOIN crawl_data c2
16 ON c1.address = c2.address
17 AND c1.crawl_date = {{ select_date_1.value }}::date
18 AND c2.crawl_date = {{ select_date_2.value }}::date
19WHERE c1.status_code != c2.status_code
20 AND content_type LIKE '%text/html%'
21ORDER BY
22 CASE change_type WHEN 'BROKEN' THEN 1 WHEN 'FIXED' THEN 2 ELSE 3 END,
23 c1.inlinks DESC NULLS LAST;

Pro tip: The 'BROKEN' category in the status change query (pages that went from 200 to non-200) is the most urgent output to surface to developers. Consider adding a Retool Notification or Slack message trigger via Retool Workflows when new broken pages are detected in a crawl import.

Expected result: The trend chart shows issue counts across all stored crawl dates. The comparison table highlights pages that changed status between the two selected crawl dates, clearly labeled as BROKEN, FIXED, or CHANGED for developer handoff.

5

Automate crawl imports using Screaming Frog CLI and Retool Workflows

For teams that run Screaming Frog crawls regularly (weekly or monthly), manual CSV export and import becomes tedious. The Screaming Frog CLI — available in licensed versions — enables headless crawls that output directly to files. Combined with a Retool Workflow triggered by a webhook, you can fully automate the import pipeline. On your server or local machine, the Screaming Frog CLI command for a basic crawl with CSV output is: screaming-frog-seo-spider-cli --crawl https://example.com --headless --output-folder /path/to/output --export-tabs 'Internal:All' After the crawl completes, a script on the same machine can read the generated CSV and POST the data to a Retool Workflow webhook endpoint. In Retool, create a new Workflow and add a Webhook trigger. Retool generates a unique webhook URL with an API key in the format: https://api.retool.com/workflows/[id]/startTrigger. In the Workflow, add a Resource Query block connected to your database that runs a parameterized INSERT query. The webhook payload contains the crawl data rows as a JSON array (converted from CSV by the local script). The Loop block iterates over the rows and inserts each one. For the local conversion script, write a simple Python or Node.js script that reads the Screaming Frog CSV output, converts it to JSON, and posts it to the Retool Workflow webhook URL. Set this script as a cron job to run automatically after each scheduled crawl. For complex multi-site crawl pipelines with dozens of domains, data normalization across different site structures, and integration with SEO platforms like SEMrush or Google Search Console, RapidDev's team can help architect a robust automated SEO monitoring system built on Retool.

import_crawl.py
1# Python script convert Screaming Frog CSV output and POST to Retool Workflow
2import csv
3import json
4import requests
5from datetime import date
6
7CSV_PATH = '/path/to/screaming-frog-output/internal_all.csv'
8WEBHOOK_URL = 'https://api.retool.com/workflows/YOUR_WORKFLOW_ID/startTrigger'
9WEBHOOK_API_KEY = 'retool_wk_YOUR_API_KEY'
10CRAWL_DATE = date.today().isoformat()
11
12def convert_csv_to_json(filepath):
13 rows = []
14 with open(filepath, encoding='utf-8-sig') as f:
15 reader = csv.DictReader(f)
16 for row in reader:
17 rows.append({
18 'crawl_date': CRAWL_DATE,
19 'address': row.get('Address', ''),
20 'content_type': row.get('Content Type', ''),
21 'status_code': int(row['Status Code']) if row.get('Status Code') else None,
22 'status': row.get('Status', ''),
23 'indexability': row.get('Indexability', ''),
24 'title_1': row.get('Title 1', ''),
25 'title_1_length': int(row['Title 1 Length']) if row.get('Title 1 Length') else None,
26 'meta_description_1': row.get('Meta Description 1', ''),
27 'h1_1': row.get('H1-1', ''),
28 'word_count': int(row['Word Count']) if row.get('Word Count') else None,
29 'crawl_depth': int(row['Crawl Depth']) if row.get('Crawl Depth') else None,
30 'inlinks': int(row['Inlinks']) if row.get('Inlinks') else None
31 })
32 return rows
33
34rows = convert_csv_to_json(CSV_PATH)
35
36response = requests.post(
37 WEBHOOK_URL,
38 headers={
39 'Content-Type': 'application/json',
40 'X-Workflow-Api-Key': WEBHOOK_API_KEY
41 },
42 json={'rows': rows, 'crawl_date': CRAWL_DATE}
43)
44print(f'Imported {len(rows)} rows, status: {response.status_code}')

Pro tip: Batch the CSV rows into chunks of 500 before posting to the Retool Workflow webhook to avoid payload size limits. Use multiple sequential POST requests with the same crawl_date, and verify the total row count in the database after all batches complete.

Expected result: The Retool Workflow webhook receives crawl data from the local script. The Loop block inserts each row into the database. After the workflow run completes, the Retool dashboard automatically shows the new crawl date in the comparison selectors.

Common use cases

Build a technical SEO issue tracker from crawl exports

Create a Retool dashboard that imports Screaming Frog's all_inlinks CSV export and organizes issues by type — 4xx errors, 5xx errors, redirect chains, missing title tags, duplicate H1s — in a filterable table. Add an issue status column where developers can mark issues as 'In Progress' or 'Fixed', creating a lightweight SEO issue tracker that bridges the gap between crawl findings and engineering tasks.

Retool Prompt

Build a technical SEO issue dashboard that reads crawl data from a PostgreSQL table, groups issues by type (4xx, redirect chain, missing meta, duplicate content) with counts, allows filtering by issue type and URL pattern, and includes a Status dropdown column where team members can update issue resolution state.

Copy this prompt to try it in Retool

Historical crawl comparison to track SEO health over time

Build a Retool dashboard that compares crawl snapshots from different dates to show SEO health trends. Display metrics like total pages crawled, broken link count, average page depth, redirect chain count, and indexability rate across multiple crawl dates on a line chart. Identify whether technical SEO health is improving or degrading with each site update.

Retool Prompt

Create a crawl health trends panel with a date range selector, a line chart showing broken link count, redirect count, and indexable page count over time from monthly crawl snapshots stored in the database, and a Table comparing the latest crawl vs the previous crawl with change indicators showing which metrics improved or worsened.

Copy this prompt to try it in Retool

Redirect audit panel combining crawl data with traffic data

Build a redirect chain analysis dashboard that imports Screaming Frog's redirect data and joins it with page traffic data from Google Search Console to prioritize which redirect chains to fix first. Show each redirect path with chain length, status codes at each hop, the final destination URL, and monthly organic impressions to help teams focus engineering effort on redirects affecting high-traffic pages.

Retool Prompt

Build a redirect priority panel that queries redirect chains from the crawl database joined with GSC impression data, shows each chain's length, status codes, and organic impact, sorted by impressions descending so engineers tackle the most impactful redirects first.

Copy this prompt to try it in Retool

Troubleshooting

CSV import fails with type conversion errors for numeric columns

Cause: Screaming Frog exports empty strings for numeric fields when data is unavailable (e.g., word count for non-HTML pages). Direct type casting fails on empty strings in PostgreSQL.

Solution: Use NULLIF() to convert empty strings to NULL before casting: NULLIF(word_count, '')::integer. Import all columns as TEXT into a staging table first, then use a typed INSERT SELECT with NULLIF wrappers on all numeric columns to move data into the final table with proper types.

typescript
1-- Safe numeric cast from Screaming Frog CSV empty strings
2NULLIF(status_code, '')::integer,
3NULLIF(word_count, '')::integer,
4NULLIF(response_time, '')::numeric,
5NULLIF(crawl_depth, '')::integer

Crawl comparison query returns no rows even though both dates exist in the database

Cause: The URL addresses may have slight differences between crawl dates — for example, trailing slashes or uppercase/lowercase protocol variations — causing the JOIN to find no matches.

Solution: Normalize URL addresses before comparing by applying LOWER() and TRIM(TRAILING '/' FROM address) in both sides of the JOIN. Add an index on the normalized address field. Run a quick diagnostic query to check if the same URL appears with different formatting across crawl dates.

typescript
1-- Normalized URL comparison in crawl JOIN
2JOIN crawl_data c2
3 ON LOWER(TRIM(TRAILING '/' FROM c1.address))
4 = LOWER(TRIM(TRAILING '/' FROM c2.address))
5 AND c2.crawl_date = {{ select_date_2.value }}::date

Screaming Frog CLI crawl command fails to start or exits immediately

Cause: The CLI requires a valid Screaming Frog license file present on the machine. The headless mode also requires a display server or virtual frame buffer on Linux systems.

Solution: Verify your Screaming Frog license is activated on the machine running the CLI. On Linux servers, install Xvfb (virtual frame buffer) and run the CLI via xvfb-run: xvfb-run screaming-frog-seo-spider-cli --crawl https://example.com --headless. Ensure the --output-folder path exists and is writable by the process.

The Retool Workflow webhook import times out for large crawls with 50,000+ URLs

Cause: Posting a single large JSON payload with thousands of rows exceeds the webhook request size limit or the Workflow's execution timeout.

Solution: Split the CSV into batches of 500-1000 rows before posting to the webhook. Use multiple sequential POST requests from your import script, each containing a batch of rows with the same crawl_date. Add a small delay between batches to avoid overwhelming the Workflow. Verify Retool Workflow has a generous enough timeout configured (Retool Cloud allows up to 10 minutes per run).

Best practices

  • Store Screaming Frog exports in a PostgreSQL table with a crawl_date column on every row — this enables historical comparison and trend analysis that flat CSV files cannot provide.
  • Create a staging table with all TEXT columns for initial CSV import, then use a typed INSERT SELECT to move data with proper type casting — this avoids import failures from Screaming Frog's empty string numeric fields.
  • Normalize URLs before storing them (lowercase, trim trailing slashes) so that crawl comparison queries correctly match the same page across different crawl dates.
  • Filter issue queries to specific content types (content_type LIKE '%text/html%') to exclude image, CSS, and JavaScript assets from SEO-focused reports.
  • Sort issue lists by inlink count descending so the highest-authority pages with issues appear first — fixing broken links on high-inlink pages has the greatest SEO impact.
  • Use a dedicated SEO Retool workspace where only SEO team members have edit access — use viewer permissions for developers and clients who only need to see the dashboard.
  • Combine Screaming Frog crawl data with Google Search Console data in the same Retool app by adding GSC as a second REST API Resource, enabling URL-level correlation between technical issues and organic traffic impact.

Alternatives

Frequently asked questions

Does Screaming Frog have a REST API I can connect to Retool directly?

No, Screaming Frog SEO Spider does not have a REST API. It is a desktop application that stores crawl data locally. The integration pattern with Retool is to export crawl results as CSV or XLSX files and import them into a database (PostgreSQL, MySQL, or Retool Database), then query the stored data in Retool. The Screaming Frog CLI enables some automation for scheduled crawls.

Which Screaming Frog export tabs should I import into Retool?

The most useful export for a comprehensive SEO dashboard is the Internal tab (File → Export → Internal), which includes all crawled URLs with status codes, title tags, meta descriptions, H1 tags, word count, response time, canonical URLs, indexability status, and inlink counts. For redirect analysis, also export the Redirect Chains tab. For link audit purposes, export the All Inlinks tab.

Do I need a Screaming Frog license to use the CLI for automated crawls?

Yes, the Screaming Frog CLI requires a paid license. The free version of Screaming Frog is limited to crawling 500 URLs and does not include CLI access. A single user license costs approximately £209 per year. For automated server-based crawling combined with Retool Workflows, you need the paid license installed on the server where the CLI will run.

How often should I run Screaming Frog crawls and import data into Retool?

For active websites with regular content updates or development deploys, weekly crawls are recommended. For more stable sites, monthly crawls provide sufficient historical data for trend analysis. After major site migrations or CMS updates, run an immediate crawl to detect any newly introduced technical issues. Store each crawl with a unique date in the database to maintain a full history of technical SEO changes over time.

Can I combine Screaming Frog crawl data with Google Search Console data in Retool?

Yes, this is one of the most powerful uses of Retool for SEO. Add Google Search Console as a second REST API Resource in the same Retool app. Query GSC for page-level impressions and clicks using the searchanalytics endpoint, then JOIN or merge those results with your crawl_data table on the URL field. This lets you prioritize technical issues based on organic traffic impact — for example, ranking broken links by how much traffic the source pages receive.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Integrations are where projects stall

We wire Retool integrations like this one every week — auth, webhooks, edge cases included. Fixed-price builds from $13K, delivered in 6–10 weeks.

Talk to an integration engineer

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.