
TikTok Shop Scraper
scrape.ly/store/shelfbright/tiktok-shop-scraperE-commerceSocial media
1 monthly user

Scrape the UK Companies House register: company profiles, status, SIC codes, registered office, accounts and confirmation statement deadlines, previous names, officers, persons with significant control, filing history and charges. Search by name, company number or advanced filters. No API key or login needed.
Pull clean UK company records straight from the public Companies House register: status, type, incorporation date, registered office, SIC codes, accounts and confirmation statement deadlines, previous names, officers, persons with significant control (PSCs), filing history and charges. Search by name, company number or advanced filters (industry, location, status, type, dates). No API key, no login, and 10 full company records usually take a few seconds.
| Field | What it does |
|---|---|
searchQueries | Company names or keywords. Plain searches also match previous names. |
companyNumbers | Exact numbers like 00445790, SC123456, OC301540. |
startUrls | Company pages, keyword searches or advanced search result URLs. |
maxResults | Total companies to save (0 = no limit). |
maxResultsPerSearch | Optional cap per query, SIC code or search URL. |
sicCodes, location, companyNameIncludes, companyNameExcludes, companyStatus, companyTypes, incorporatedFrom/To, dissolvedFrom/To | Advanced search filters. Several SIC codes are searched one by one and merged. |
includeOfficers, onlyCurrentOfficers, includePSCs, includeFilingHistory, maxFilings, includeCharges | Extra details per company. |
{
"sicCodes": ["62012"],
"location": "Manchester",
"incorporatedFrom": "2026-01-01",
"companyStatus": ["active"],
"maxResults": 100,
"includeOfficers": true,
"includePSCs": true
}
One row per company. Main fields:
| Field | Example |
|---|---|
companyNumber, companyName | 12345678, NORTHWIND ANALYTICS LTD |
companyStatus, companyStatusDetail, companyType | Active, null, Private limited Company |
incorporatedOn, dissolvedOn | 2019-05-14, null |
registeredOfficeAddress | 12 Example Street, Manchester, England, M1 1AA |
sicCodes, sicCodesText | [{"code": "62012", "description": "Business and domestic software development"}] |
nextAccountsMadeUpTo, accountsDueBy, lastAccountsMadeUpTo, accountsOverdue | Accounts dates and an overdue flag |
nextConfirmationStatementDate, confirmationStatementDueBy, lastConfirmationStatementDate, confirmationStatementOverdue | Confirmation statement dates and an overdue flag |
previousNames | [{"name": "...", "from": "...", "to": "..."}] |
hasCharges, hasInsolvencyHistory, isActive, companyAgeYears | Quick flags |
officers, officersOnRegister, activeOfficersCount, directorsCount, officerNames | Officers (when enabled) |
pscs, pscStatements, activePscCount | Persons with significant control (when enabled) |
filings, lastFilingDate, lastFilingType | Filing history with PDF links (when enabled) |
charges, chargesSummary | Registered charges (when enabled) |
url, source, searchQuery, scrapedAt | Where the row came from |
Example (fictional company, same shape as real output):
{
"companyNumber": "12345678",
"companyName": "NORTHWIND ANALYTICS LTD",
"companyStatus": "Active",
"companyStatusDetail": null,
"companyType": "Private limited Company",
"incorporatedOn": "2019-05-14",
"dissolvedOn": null,
"registeredOfficeAddress": "12 Example Street, Manchester, England, M1 1AA",
"sicCodes": [{ "code": "62012", "description": "Business and domestic software development" }],
"sicCodesText": "62012 - Business and domestic software development",
"nextAccountsMadeUpTo": "2026-05-31",
"accountsDueBy": "2027-02-28",
"lastAccountsMadeUpTo": "2025-05-31",
"accountsOverdue": false,
"nextConfirmationStatementDate": "2027-05-13",
"confirmationStatementDueBy": "2027-05-27",
"lastConfirmationStatementDate": "2026-05-13",
"confirmationStatementOverdue": false,
"previousNames": [{ "name": "NORTHWIND DATA LTD", "from": "2019-05-14", "to": "2021-03-02" }],
"hasCharges": false,
"hasInsolvencyHistory": false,
"isActive": true,
"companyAgeYears": 7.4,
"officers": [
{
"name": "SAMPLE, Jane Alexandra",
"officerId": "AbCdEfGhIjKlMnOpQrStUvWxYz0",
"appointmentsUrl": "https://find-and-update.company-information.service.gov.uk/officers/AbCdEfGhIjKlMnOpQrStUvWxYz0/appointments",
"role": "Director",
"status": "Active",
"appointedOn": "2019-05-14",
"resignedOn": null,
"nationality": "British",
"occupation": null,
"countryOfResidence": "England",
"isCorporate": false
}
],
"officersOnRegister": 1,
"activeOfficersCount": 1,
"directorsCount": 1,
"officerNames": "SAMPLE, Jane Alexandra",
"pscs": [
{
"name": "Ms Jane Alexandra Sample",
"status": "Active",
"kind": "individual",
"notifiedOn": "2019-05-14",
"ceasedOn": null,
"nationality": "British",
"countryOfResidence": "England",
"naturesOfControl": ["Ownership of shares – 75% or more", "Ownership of voting rights - 75% or more"],
"naturesOfControlCodes": ["ownership-of-shares-75-to-100-percent", "voting-rights-75-to-100-percent"]
}
],
"pscStatements": [],
"activePscCount": 1,
"incompleteSections": [],
"source": "advancedSearch",
"searchQuery": "62012",
"url": "https://find-and-update.company-information.service.gov.uk/company/12345678",
"scrapedAt": "2026-10-15T09:00:00Z"
}
You pay $2.50 per 1,000 companies ($0.0025 per company), with officers, PSCs, filing history and charges included in that price. Platform usage (compute and proxy traffic) is billed separately and is small for this scraper: it reads plain HTML pages over datacenter proxies with no browser. In our test, 1,000 companies with officers and PSCs took under two minutes and about $0.13 of platform usage.
Example: 1,000 companies with officers and PSCs cost $2.50 in results plus about $0.13 of platform usage, roughly $2.63 in total.
Is it legal? The Companies House register is public information published by the UK government under the Open Government Licence. You are responsible for how you use personal data about officers and PSCs (for example under UK GDPR). To help, the scraper never saves dates of birth or the addresses of private individuals.
Do I need a Companies House API key, a login or a proxy? No. The scraper reads the public website. Datacenter proxies are on by default and spread requests across several addresses so no address hits the site's rate limit.
How many companies can I get? A keyword search returns up to 1,000 companies. An advanced search returns up to 10,000 per query, and the scraper automatically splits bigger searches by incorporation date to go past that. Several SIC codes are searched one by one.
Why is a field empty? Companies House only shows what was filed. Occupation is often not shown on the public site, new companies have no accounts yet, and dissolved companies have no upcoming deadlines. If a details page fails to load, its name appears in incompleteSections.
Can I schedule it or use the API? Yes. Schedule a daily run with incorporatedFrom set to catch new companies, and fetch results through the API or webhooks.
How do keyword searches and filters combine? With no advanced filters, each query runs as a normal register search (it also matches previous names). As soon as any advanced filter is set, each query is used as the "company name includes" filter together with your filters.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
searchQueriesarrayOptionalCompany names or keywords
Search the UK register by company name or keyword, for example green energy or tesco. Plain searches also match previous company names. When you set any advanced filter below, each entry is used as the 'company name includes' filter instead.
companyNumbersarrayOptionalCompany numbers
Exact company numbers, for example 00445790, SC123456, OC301540 or NI036672. Short numbers are padded (445790 becomes 00445790).
startUrlsarrayOptionalCompanies House URLs
Links from find-and-update.company-information.service.gov.uk: company pages (/company/00445790), keyword searches (/search/companies?q=...) or advanced search results (/advanced-search/get-results?...).
maxResultsintegerOptionaldefault 20Max companies
How many companies to save in total across all inputs. 0 means no limit. Keyword searches return up to 1,000 companies each; advanced searches can return much more.
maxResultsPerSearchintegerOptionalMax companies per search
Optional cap for each search query, SIC code or search URL, so a long list of searches is shared fairly. 0 means no per-search cap (only Max companies applies).
Build a list from the whole register by industry, location, status, type and dates. Several SIC codes are searched one by one and merged.
sicCodesarrayOptionalSIC codes
Industry codes, for example 62012 (software development), 56101 (restaurants), 68310 (estate agents).
locationstringOptionalRegistered office location
Town, county or postcode in the registered office address, for example Manchester or EC1.
companyNameIncludesstringOptionalCompany name includes
Only companies whose name contains this text.
companyNameExcludesstringOptionalCompany name excludes
Leave out companies whose name contains this text.
companyStatusarrayOptionalCompany status
Only companies with one of these statuses.
companyTypesarrayOptionalCompany types
Only companies of these types.
incorporatedFromstringOptionalIncorporated from
Only companies incorporated on or after this date (YYYY-MM-DD). Combine with a schedule to catch new companies.
incorporatedTostringOptionalIncorporated to
Only companies incorporated on or before this date (YYYY-MM-DD).
dissolvedFromstringOptionalDissolved from
Only companies dissolved on or after this date (YYYY-MM-DD).
dissolvedTostringOptionalDissolved to
Only companies dissolved on or before this date (YYYY-MM-DD).
Choose which extra pages to read for each company. Each option adds one or more page loads per company.
includeOfficersbooleanOptionaldefault trueInclude officers
Directors, secretaries and LLP members: name, role, status, appointed and resigned dates, nationality, occupation and country of residence. Dates of birth and personal addresses are never saved.
onlyCurrentOfficersbooleanOptionaldefault falseOnly current officers
Skip officers who have resigned.
includePSCsbooleanOptionaldefault trueInclude persons with significant control
Owners and controllers: name, kind, nature of control, notified and ceased dates, nationality, country of residence, and the registration details of corporate owners. Dates of birth and personal addresses are never saved.
includeFilingHistorybooleanOptionaldefault falseInclude filing history
Recent filings with date, form type, description and a link to the PDF document.
maxFilingsintegerOptionaldefault 25Max filings per company
How many of the newest filings to save per company (25 per page load).
includeChargesbooleanOptionaldefault falseInclude charges
Registered charges (mortgages): title, status, created, delivered and satisfied dates, persons entitled and particulars.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy configuration
Companies House works well with datacenter proxies. Several proxy sessions keep each address under the site's rate limit.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| companyName | any | Company |
| companyNumber | any | Number |
| companyStatus | any | Status |
| companyType | any | Type |
| incorporatedOn | any | Incorporated |
| registeredOfficeAddress | any | Registered office |
| sicCodesText | any | SIC codes |
| officerNames | any | Current officers |
| activePscCount | any | Active PSCs |
| url | any | Company page |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Company | One saved company record, with officers, PSCs, filings and charges when enabled. | $0.0025 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('cornerledger/companies-house-scraper').call({
"searchQueries": [
"green energy"
],
"maxResults": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run cornerledger/companies-house-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=cornerledger/companies-house-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Company records with officers, owners and 5 recent filings.
Companies filtered by industry code, location and status.
Matching companies with officers, owners and charges.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.