The Semrush connector lets your AI agent act in each user's Semrush account. Each user connects their own Semrush API key once, and Scalekit sends it with every call, so your agent never handles credentials. It comes with 54 tools.
- Tools
- 54
- What they doRead · write · destructive
- 35 · 14 · 535 read14 write5 destructive
- Users sign in with
- API key
Setup
Install the SDK
Terminal window npm install @scalekit-sdk/node dotenvTerminal window pip install scalekit-sdk-python python-dotenvSet your credentials
Add your Scalekit credentials to your
.envfile. Find values in app.scalekit.com > Developers > API Credentials..env SCALEKIT_ENVIRONMENT_URL=<your-environment-url>SCALEKIT_CLIENT_ID=<your-client-id>SCALEKIT_CLIENT_SECRET=<your-client-secret>Create the Semrush connection
In AgentKit > Connections, create a Semrush connection. The name you give it is the
connection_nameyour code passes. See Configure connections.Authorize a user and make your first call
quickstart.mts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'import { createInterface } from 'node:readline/promises'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENVIRONMENT_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'semrush'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize Semrush:', link)const rl = createInterface({ input: process.stdin, output: process.stdout })await rl.question('Press Enter after authorizing...')rl.close()// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'semrush_get_map_rank_limits',toolInput: {},})console.log(result)Terminal window npx tsx quickstart.mtsquickstart.py import osfrom scalekit import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "semrush"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize Semrush:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="semrush_get_map_rank_limits",connection_name=connection_name,identifier=identifier,)print(result)Terminal window python quickstart.pyEach user opens the link once and enters their Semrush credentials there. See Authorize a user for the full flow and statuses.
Tools
Pass the exact name toexecute_toolsemrush_compare_backlink_profilesCompare backlink profiles of up to 10 targets side by side.Read-onlyCompare Backlink Profiles
Compare backlink profiles of up to 10 targets side by side. Returns one row per target with authority score, backlinks, referring domains and follow links. Use it for a quick benchmark of known sites; use get_backlink_gap to find domains linking to some targets but not others. Costs 40 API units per returned row.
Inputs
scopestringrequired- Which part of the target to analyze: ROOT_DOMAIN, SUBDOMAIN, PAGE. ROOT_DOMAIN covers the whole domain and its subdomains; PAGE covers one exact URL.one of
ROOT_DOMAINSUBDOMAINPAGE urlsstringrequired- Comma-separated list of up to 10 targets (domains, subdomains or pages) to compare, all analyzed with the same scope. Example: samplesite.com,othersite.com.
fieldsstring- Comma-separated names of the response fields to return; leave empty to return all fields. Example: score,backlinks_count,domains_count.
semrush_get_backlink_gapCompare up to 6 targets by shared referring domains.Read-onlyGet Backlink Gap
Compare up to 6 targets by shared referring domains. Returns one row per referring domain with its backlink counts to each target in request order, matches_count, domain score, country and IP address. Use it to find link opportunities that competitors have and you lack; use compare_backlink_profiles for totals only. Costs 40 API units per returned row.
Inputs
scopestringrequired- Which part of the target to analyze: ROOT_DOMAIN, SUBDOMAIN, PAGE. ROOT_DOMAIN covers the whole domain and its subdomains; PAGE covers one exact URL.one of
ROOT_DOMAINSUBDOMAINPAGE urlsstringrequired- Comma-separated list of up to 6 targets to compare, all analyzed with the same scope. Order matters: the backlinks_counts array in each row follows this order. Example: samplesite.com,othersite.com.
directionstring- Sort direction, ASC or DESC. The API default is DESC.one of
ASCDESC filterstring- Advanced filter over the returned fields. Combine conditions with AND and OR, group with parentheses, and use LIKE or NOT LIKE with % as a wildcard. Strings take single or double quotes. Example: backlinks_counts[1] > 10 AND country = 'US'.
limitinteger- Maximum number of rows to return. The API default is 100. Each returned row is billed in API units, so keep it small when exploring.
offsetinteger- Number of rows to skip, for paging through a long result. Combine with limit.
order_bystring- Response field to sort by, such as domain_score or backlinks_counts. Example: domain_score.
semrush_get_backlinks_historyGet monthly historical trends of authority score, backlinks, referring domains and follow links for a target.Read-onlyGet Backlinks History
Get monthly historical trends of authority score, backlinks, referring domains and follow links for a target. Returns one row per month with month_date, score, backlinks_count, domains_count and follows_count. Use it to chart growth over time; use get_backlinks_overview for the current snapshot. Costs 40 API units per returned row.
Inputs
scopestringrequired- Which part of the target to analyze: ROOT_DOMAIN, SUBDOMAIN, PAGE. ROOT_DOMAIN covers the whole domain and its subdomains; PAGE covers one exact URL.one of
ROOT_DOMAINSUBDOMAINPAGE urlstringrequired- Domain, subdomain, subfolder or full page URL to analyze, with or without protocol (max 2000 characters). It must match the chosen scope. Example: example.com.
date_fromstring- First month to include, formatted YYYY-MM. Defaults to the oldest available month. Example: 2024-01.
date_tostring- Last month to include, formatted YYYY-MM. Defaults to the current month. Example: 2024-12.
fieldsstring- Comma-separated names of the response fields to return; leave empty to return all fields. Example: score,backlinks_count,domains_count.
limitinteger- Maximum number of monthly rows to return. The API default is 12; it cannot exceed the history available for the target.
semrush_get_backlinks_overviewGet aggregated backlink metrics for a domain, subdomain, subfolder or page.Read-onlyGet Backlinks Overview
Get aggregated backlink metrics for a domain, subdomain, subfolder or page. Returns counts of backlinks, referring domains, IPs, follow, nofollow, sponsored, UGC, text, image, new and lost links, plus the authority score. Use it for a quick profile of one target; use list_backlinks for individual links or get_backlinks_history for monthly trends. Costs 45 API units per request.
Inputs
scopestringrequired- Which part of the target to analyze: ROOT_DOMAIN, SUBDOMAIN, SUBFOLDER, PAGE. ROOT_DOMAIN covers the whole domain and its subdomains; PAGE covers one exact URL.one of
ROOT_DOMAINSUBDOMAINSUBFOLDERPAGE urlstringrequired- Domain, subdomain, subfolder or full page URL to analyze, with or without protocol (max 2000 characters). It must match the chosen scope. Example: example.com.
fieldsstring- Comma-separated names of the response fields to return; leave empty to return all fields. Example: backlinks_count,domains_count,score.
semrush_get_gbp_metricsGet Google Business Profile performance metrics (views, searches, website clicks, direction requests, call clicks) for 1 to 5 locations over a date range, aggregated daily, weekly or monthly and as period totals, plus the average GBP review rating.Read-onlyGet GBP Metrics
Get Google Business Profile performance metrics (views, searches, website clicks, direction requests, call clicks) for 1 to 5 locations over a date range, aggregated daily, weekly or monthly and as period totals, plus the average GBP review rating. Locations must be connected to GBP. Pass at least one of aggregated_metrics or total_metrics.
Inputs
date_fromstringrequired- Start date, YYYY-MM-DD, within the last 24 months. Example: 2024-01-01.
date_tostringrequired- End date, YYYY-MM-DD, within the last 24 months. Example: 2024-12-01.
location_idsstringrequired- Comma-separated IDs of 1 to 5 locations, from list_locations. Example: 1d21ceab55d740709311ec9b8a12c01e,2c32dfbc66e851820422fd9c9b23d12f.
aggregated_metricsstring- Comma-separated metrics to return per period: ALL_ACTION, MAPS_VIEWS, SEARCH_VIEWS, TOTAL_VIEWS, BUSINESS_IMPRESSIONS_MOBILE_SEARCH, BUSINESS_IMPRESSIONS_DESKTOP_SEARCH, BUSINESS_IMPRESSIONS_MOBILE_MAPS, BUSINESS_IMPRESSIONS_DESKTOP_MAPS, WEBSITE_CLICKS, BUSINESS_DIRECTION_REQUESTS, CALL_CLICKS. Example: MAPS_VIEWS,WEBSITE_CLICKS.
aggregation_modestring- Period for aggregated_metrics: DAILY, WEEKLY or MONTHLY. The API default is DAILY.one of
DAILYWEEKLYMONTHLY total_metricsstring- Comma-separated metrics to return as totals for the whole range: TOTAL_VIEWS, TOTAL_MAPS_VIEWS, TOTAL_SEARCH_VIEWS, TOTAL_MOBILE_SEARCH_VIEWS, TOTAL_DESKTOP_SEARCH_VIEWS, TOTAL_MOBILE_MAPS_VIEWS, TOTAL_DESKTOP_MAPS_VIEWS, TOTAL_ACTION, TOTAL_WEBSITE_CLICKS_ACTION, TOTAL_BUSINESS_DIRECTION_REQUESTS_ACTION, TOTAL_CALL_CLICKS_ACTION. Example: TOTAL_VIEWS,TOTAL_WEBSITE_CLICKS_ACTION.
semrush_get_keyword_metricsGet search metrics for one keyword in one country: monthly search volume, keyword difficulty, CPC in USD cents, competitive density, search intents, SERP features, number of results and a 12-month interest trend.Read-onlyGet Keyword Metrics
Get search metrics for one keyword in one country: monthly search volume, keyword difficulty, CPC in USD cents, competitive density, search intents, SERP features, number of results and a 12-month interest trend. Use it to size and compare keywords one at a time. Costs 20 API units per request.
Inputs
countrystringrequired- Two-letter ISO 3166-1 country code of the Google database to use (the United Kingdom is UK, not GB). Example: US.one of
AFALDZAOARAMAUATAZBSBHBDBYBEBZBOBABWBRBNBGKHCMCACVCLCOCRHRCYCZCDDKDOECEGSVEEETFIFRGEDEGHGRGTGYHTHNHKHUISINIDIEILITJMJPJOKZKWLVLBLYLTLUMGMYMTMUMXMDMNMEMAMZNANPNLNZNINGNOOMPKPAPYPEPHPLPTQARORUSASNRSSGSKSIZAKRESLKSECHTWTHTTTNTRUAAEUKUSUYVEVNZMZW keywordstringrequired- The keyword or phrase to analyze, 1 to 255 characters. Example: seo tools.
monthstring- Monthly snapshot to return, formatted YYYY-MM, from 2012-01 up to the current month. The API default is the current month. Example: 2024-01.
semrush_get_locationGet one business location with its address, contact details, hours, categories, status (COMPLETED, PROCESSING or FAILED), frozen flag and any errors.Read-onlyGet Location
Get one business location with its address, contact details, hours, categories, status (COMPLETED, PROCESSING or FAILED), frozen flag and any errors. Use it to confirm a create or update finished; use list_locations to find IDs.
Inputs
location_idstringrequired- 32-character hex ID of the Local location. Find it with list_locations. Example: 1d21ceab55d740709311ec9b8a12c01e.
semrush_get_location_more_hour_typesGet the extra hour types (such as DELIVERY, TAKEOUT, HAPPY_HOUR, SENIOR_HOURS) a location can set.Read-onlyGet Location More Hour Types
Get the extra hour types (such as DELIVERY, TAKEOUT, HAPPY_HOUR, SENIOR_HOURS) a location can set. Use the values as type in more_hours when updating the location. Applies only to locations connected to Google Business Profile.
Inputs
location_idstringrequired- 32-character hex ID of the Local location. Find it with list_locations. Example: 1d21ceab55d740709311ec9b8a12c01e.
semrush_get_location_payment_optionsGet the payment option identifiers available for a location, such as CASH, CREDIT_CARD, DEBIT_CARD and NFC_MOBILE_PAYMENTS.Read-onlyGet Location Payment Options
Get the payment option identifiers available for a location, such as CASH, CREDIT_CARD, DEBIT_CARD and NFC_MOBILE_PAYMENTS. Use the values in payment_options when updating the location.
Inputs
location_idstringrequired- 32-character hex ID of the Local location. Find it with list_locations. Example: 1d21ceab55d740709311ec9b8a12c01e.
semrush_get_map_rank_campaignGet one Map Rank Tracker campaign: keywords, grid settings and points, collection schedule, report dates, business (cid and place IDs) and status.Read-onlyGet Map Rank Campaign
Get one Map Rank Tracker campaign: keywords, grid settings and points, collection schedule, report dates, business (cid and place IDs) and status. Use it to find the keyword IDs, cid and report dates needed by the heatmap, metrics and competitors tools.
Inputs
campaign_idstringrequired- ID of the Map Rank Tracker campaign, from list_map_rank_campaigns. Example: 382738af-b6ae-4002-b6f6-c4c907b2b024.
semrush_get_map_rank_competitorsGet the campaign business and its top local competitors for one keyword and report date, with address, rating, review count, average position and share of voice, paged.Read-onlyGet Map Rank Competitors
Get the campaign business and its top local competitors for one keyword and report date, with address, rating, review count, average position and share of voice, paged. An unknown report date returns no competitors. Does not use API units.
Inputs
campaign_idstringrequired- ID of the Map Rank Tracker campaign, from list_map_rank_campaigns. Example: 382738af-b6ae-4002-b6f6-c4c907b2b024.
keywordIdstringrequired- ID of a campaign keyword, from list_map_rank_keywords. Example: 319565ed-b433-4195-82cb-4146253d3311.
reportDatestringrequired- Report timestamp in ISO 8601, exactly as listed in the campaign's reportDates. Example: 2024-07-05T12:39:22.611Z. An incorrect date returns an empty competitor list.
pageinteger- Zero-based page index. The API default is 0.
sizeinteger- Number of items per page. The API default is 10.
sortstring- Sort as field,direction. Fields: averagePosition, name, rating, reviewNumber, shareOfVoice; directions ASC or DESC. The API default is averagePosition,ASC.
semrush_get_map_rank_heatmapGet the heatmap for one campaign keyword on one report date: each grid point's coordinates, the business's rank there and the change from the previous report.Read-onlyGet Map Rank Heatmap
Get the heatmap for one campaign keyword on one report date: each grid point's coordinates, the business's rank there and the change from the previous report. Use get_map_rank_metrics for the trend over time. Does not use API units.
Inputs
campaign_idstringrequired- ID of the Map Rank Tracker campaign, from list_map_rank_campaigns. Example: 382738af-b6ae-4002-b6f6-c4c907b2b024.
keywordIdstringrequired- ID of a campaign keyword, from list_map_rank_keywords. Example: 319565ed-b433-4195-82cb-4146253d3311.
reportDatestringrequired- Report timestamp in ISO 8601, exactly as listed in the campaign's reportDates. Example: 2024-07-05T12:39:22.611Z.
cidstring- Business ID (cid) from get_map_rank_campaign. Provide this or placeIds.
placeIdsstring- Google place ID of the business from get_map_rank_campaign. Provide this or cid. Example: ChIJD61nCjmD4BQRhaNSCAIuSm4.
semrush_get_map_rank_limitsGet the account's Map Rank Tracker campaign slots and monthly credits: total, in use or spent, and available.Read-onlyGet Map Rank Limits
Get the account's Map Rank Tracker campaign slots and monthly credits: total, in use or spent, and available. Check it before create_map_rank_campaign or collect_map_rank_campaign. Does not use API units.
Inputs
This tool takes no inputs.
semrush_get_map_rank_metricsGet average position and share of voice over time for one campaign keyword, keyed by report timestamp.Read-onlyGet Map Rank Metrics
Get average position and share of voice over time for one campaign keyword, keyed by report timestamp. Use get_map_rank_heatmap for one report's per-point ranks. An unknown keywordId returns the defaults (average position 21, share of voice 0). Does not use API units.
Inputs
campaign_idstringrequired- ID of the Map Rank Tracker campaign, from list_map_rank_campaigns. Example: 382738af-b6ae-4002-b6f6-c4c907b2b024.
keywordIdstringrequired- ID of a campaign keyword, from list_map_rank_keywords. Example: 319565ed-b433-4195-82cb-4146253d3311.
cidstring- Business ID (cid) from get_map_rank_campaign. Provide this or placeIds.
placeIdsstring- Google place ID of the business from get_map_rank_campaign. Provide this or cid. Example: ChIJD61nCjmD4BQRhaNSCAIuSm4.
semrush_get_projectGet the full details of one Semrush project: name, domain, owner, your permissions and attached tools.Read-onlyGet Project
Get the full details of one Semrush project: name, domain, owner, your permissions and attached tools. Use list_projects first if you do not know the project ID.
Inputs
project_idintegerrequired- Numeric ID of the project (folder). Find it with list_projects or in the project URL on semrush.com/projects/<id>. Example: 643526670283248.
semrush_get_review_auto_reply_configGet the automatic review-reply settings of a location: whether positive and negative reviews get replies, the language strategy, reply tone and preferred language.Read-onlyGet Review Auto-Reply Config
Get the automatic review-reply settings of a location: whether positive and negative reviews get replies, the language strategy, reply tone and preferred language. Use update_review_auto_reply_config to change them.
Inputs
location_idstringrequired- 32-character hex ID of the Local location. Find it with list_locations. Example: 1d21ceab55d740709311ec9b8a12c01e.
semrush_get_review_overviewGet review statistics for a location: total count, average rating, star distribution, unanswered count and auto-replied count.Read-onlyGet Review Overview
Get review statistics for a location: total count, average rating, star distribution, unanswered count and auto-replied count. Use list_reviews for the reviews themselves.
Inputs
location_idstringrequired- 32-character hex ID of the Local location. Find it with list_locations. Example: 1d21ceab55d740709311ec9b8a12c01e.
semrush_list_anchorsList the anchor texts used in backlinks to a target, with backlinks count, referring domain count and first and last seen dates per anchor.Read-onlyList Anchors
List the anchor texts used in backlinks to a target, with backlinks count, referring domain count and first and last seen dates per anchor. Use it to review anchor text distribution; use list_backlinks to see the individual links behind an anchor. Costs 40 API units per returned row.
Inputs
scopestringrequired- Which part of the target to analyze: ROOT_DOMAIN, SUBDOMAIN, SUBFOLDER, PAGE. ROOT_DOMAIN covers the whole domain and its subdomains; PAGE covers one exact URL.one of
ROOT_DOMAINSUBDOMAINSUBFOLDERPAGE urlstringrequired- Domain, subdomain, subfolder or full page URL to analyze, with or without protocol (max 2000 characters). It must match the chosen scope. Example: example.com.
directionstring- Sort direction, ASC or DESC. The API default is DESC.one of
ASCDESC fieldsstring- Comma-separated names of the response fields to return; leave empty to return all fields. Example: anchor,backlinks_count,domains_count.
filterstring- Advanced filter over the returned fields. Combine conditions with AND and OR, group with parentheses, and use LIKE or NOT LIKE with % as a wildcard. Strings take single or double quotes. Example: anchor LIKE '%sample%'.
limitinteger- Maximum number of rows to return. The API default is 100. Each returned row is billed in API units, so keep it small when exploring.
offsetinteger- Number of rows to skip, for paging through a long result. Combine with limit.
order_bystring- Response field to sort by; it must be one of the returned fields. The API default is domains_count. Example: backlinks_count.
semrush_list_backlink_competitorsList competitor domains for a target, ranked by overlap in referring domains.Read-onlyList Backlink Competitors
List competitor domains for a target, ranked by overlap in referring domains. Returns each competitor domain, the number of referring domains it shares with the target, and a similarity score from 0 to 1. A pair is listed only if they share at least 5 referring domains. Use it to find link-building rivals; use compare_backlink_profiles to compare known domains. Costs 40 API units per returned row.
Inputs
domainstringrequired- Target domain to find backlink competitors for, without protocol. Example: example.com.
directionstring- Sort direction, ASC or DESC. The API default is DESC.one of
ASCDESC fieldsstring- Comma-separated names of the response fields to return; leave empty to return all fields. Example: domain,common_refdomains,similarity.
limitinteger- Maximum number of rows to return. The API default is 100. Each returned row is billed in API units, so keep it small when exploring.
offsetinteger- Number of rows to skip, for paging through a long result. Combine with limit.
order_bystring- Response field to sort by; it must be one of the returned fields. The API default is similarity. Example: common_refdomains.
semrush_list_backlinksList individual backlinks pointing to a target, with source URL, anchor text, target URL, page and domain scores, link attributes (nofollow, sponsored, UGC, image, new, lost) and first and last seen dates.Read-onlyList Backlinks
List individual backlinks pointing to a target, with source URL, anchor text, target URL, page and domain scores, link attributes (nofollow, sponsored, UGC, image, new, lost) and first and last seen dates. Use it to inspect specific links; use list_referring_domains for one row per linking domain or list_anchors to group by anchor text. Costs 45 API units per returned row.
Inputs
scopestringrequired- Which part of the target to analyze: ROOT_DOMAIN, SUBDOMAIN, SUBFOLDER, PAGE. ROOT_DOMAIN covers the whole domain and its subdomains; PAGE covers one exact URL.one of
ROOT_DOMAINSUBDOMAINSUBFOLDERPAGE urlstringrequired- Domain, subdomain, subfolder or full page URL to analyze, with or without protocol (max 2000 characters). It must match the chosen scope. Example: example.com.
directionstring- Sort direction, ASC or DESC. The API default is DESC.one of
ASCDESC fieldsstring- Comma-separated names of the response fields to return; leave empty to return all fields. Example: anchor,source_url,page_score.
filterstring- Advanced filter over the returned fields. Combine conditions with AND and OR, group with parentheses, and use LIKE or NOT LIKE with % as a wildcard. Strings take single or double quotes. Example: is_nofollow = true.
limitinteger- Maximum number of rows to return. The API default is 100. Each returned row is billed in API units, so keep it small when exploring.
offsetinteger- Number of rows to skip, for paging through a long result. Combine with limit.
order_bystring- Response field to sort by; it must be one of the returned fields. The API default is page_score. Example: page_score.
semrush_list_gbp_attributesList the Google Business Profile attributes available for one category, each with its allowed option IDs and labels.Read-onlyList GBP Attributes
List the Google Business Profile attributes available for one category, each with its allowed option IDs and labels. Use the chosen values in gbp_attributes when updating a location. Get the category ID from list_gbp_categories.
Inputs
countrystringrequired- Two-letter ISO 3166-1 country code where the business is located. Example: US.one of
USAUFRDEGBCAINESITNLBRATBEDKFINOPLSECHJPMXILNZSGZATRAEHKIDVNPKCOIEBDMYSAROCLPHPTNGGRTHARPEKEHUCZRSNPLTUABGECCYHREELVISSKSIAMADPYGYEGMVUYSRKHBOLAMTPAPRTNDOMNGUVEMEMPACAGAIALAOASAWAXAZBABBBFBHBIBJBLBMBNBQBSBTBWBYBZCCCDCFCGCICKCMCRCVCWCXDJDMDZEHERETFJFKFMFOGAGDGEGFGGGHGIGLGMGNGPGQGTGWHNHTIMIOIQJEJMJOKGKIKMKNKRKWKYKZLBLCLILKLRLSLULYMAMCMDMFMGMHMKMLMMMOMQMRMSMUMWMZNANCNENFNINRNUOMPFPGPMPSPWQARERURWSBSCSHSJSLSMSNSOSSSTSVSXSZTCTDTGTJTKTLTMTOTTTVTWTZUGUZVAVCVGVIVUWFWSXKYEYTZMZW gbp_category_idstringrequired- ID of the GBP category, from list_gbp_categories. Example: 0b72e1aef15b4b2ba01c8e40b4c49b86.
semrush_list_gbp_categoriesList Google Business Profile categories available in a country, with ID, name, full path and parent ID.Read-onlyList GBP Categories
List Google Business Profile categories available in a country, with ID, name, full path and parent ID. Use the IDs in gbp_category_ids when updating a location, and list_gbp_attributes for the attributes of one category. For Local directory categories use list_location_categories.
Inputs
countrystringrequired- Two-letter ISO 3166-1 country code where the business is located. Example: US.one of
USAUFRDEGBCAINESITNLBRATBEDKFINOPLSECHJPMXILNZSGZATRAEHKIDVNPKCOIEBDMYSAROCLPHPTNGGRTHARPEKEHUCZRSNPLTUABGECCYHREELVISSKSIAMADPYGYEGMVUYSRKHBOLAMTPAPRTNDOMNGUVEMEMPACAGAIALAOASAWAXAZBABBBFBHBIBJBLBMBNBQBSBTBWBYBZCCCDCFCGCICKCMCRCVCWCXDJDMDZEHERETFJFKFMFOGAGDGEGFGGGHGIGLGMGNGPGQGTGWHNHTIMIOIQJEJMJOKGKIKMKNKRKWKYKZLBLCLILKLRLSLULYMAMCMDMFMGMHMKMLMMMOMQMRMSMUMWMZNANCNENFNINRNUOMPFPGPMPSPWQARERURWSBSCSHSJSLSMSNSOSSSTSVSXSZTCTDTGTJTKTLTMTOTTTVTWTZUGUZVAVCVGVIVUWFWSXKYEYTZMZW limitinteger- Maximum number of categories to return per call. The API default is 1000 and the maximum is 1000.
offsetinteger- Number of categories to skip, for paging. The API default is 0.
semrush_list_gbp_postsList Google Business Profile posts for 1 to 100 locations with status, text, images, publication or scheduled date and call to action.Read-onlyList GBP Posts
List Google Business Profile posts for 1 to 100 locations with status, text, images, publication or scheduled date and call to action. Filter by status. Locations must be connected to GBP.
Inputs
location_idsstringrequired- Comma-separated IDs of 1 to 100 locations, from list_locations. Example: 1d21ceab55d740709311ec9b8a12c01e,2f32dfbc66e851820422fd9c9b23d12f.
limitinteger- Maximum number of posts to return per call. The API default is 20 and the maximum is 50.
offsetinteger- Number of posts to skip, for paging. The API default is 0.
statusstring- Only return posts with this status: DRAFT, SCHEDULED, TO_SEND, SENDING, PUBLISHED or FAILED. Leave empty for all.one of
DRAFTSCHEDULEDTO_SENDSENDINGPUBLISHEDFAILED
semrush_list_indexed_pagesList the pages of a target that have backlinks, with backlink and referring domain counts, outbound and internal link counts, response code and title.Read-onlyList Indexed Pages
List the pages of a target that have backlinks, with backlink and referring domain counts, outbound and internal link counts, response code and title. Use it to find which pages attract the most links; use list_backlinks for the links themselves. Costs 40 API units per returned row.
Inputs
scopestringrequired- Which part of the target to analyze: ROOT_DOMAIN, SUBDOMAIN, SUBFOLDER, PAGE. ROOT_DOMAIN covers the whole domain and its subdomains; PAGE covers one exact URL.one of
ROOT_DOMAINSUBDOMAINSUBFOLDERPAGE urlstringrequired- Domain, subdomain, subfolder or full page URL to analyze, with or without protocol (max 2000 characters). It must match the chosen scope. Example: example.com.
directionstring- Sort direction, ASC or DESC. The API default is DESC.one of
ASCDESC fieldsstring- Comma-separated names of the response fields to return; leave empty to return all fields. Example: source_url,backlinks_count,domains_count.
filterstring- Advanced filter over the returned fields. Combine conditions with AND and OR, group with parentheses, and use LIKE or NOT LIKE with % as a wildcard. Strings take single or double quotes. Example: backlinks_count > 100.
limitinteger- Maximum number of rows to return. The API default is 100. Each returned row is billed in API units, so keep it small when exploring.
offsetinteger- Number of rows to skip, for paging through a long result. Combine with limit.
order_bystring- Response field to sort by; it must be one of the returned fields. The API default is domains_count. Example: backlinks_count.
semrush_list_location_categoriesList the Local listing categories available in a country, with ID, name, full hierarchical path and parent ID.Read-onlyList Location Categories
List the Local listing categories available in a country, with ID, name, full hierarchical path and parent ID. Use the IDs in category_ids when creating or updating a location. For Google Business Profile categories use list_gbp_categories instead.
Inputs
countrystringrequired- Two-letter ISO 3166-1 country code of the supported countries. Example: US.one of
USAUFRDEGBCAINESITNLBRATBEDKFINOPLSECHJPMXILNZSGZATRAEHKIDVNPKCOIEBDMYSAROCLPHPTNGGRTHARPEKEHUCZRSNPLTUABGECCYHREELVISSKSIAMADPYGYEGMVUYSRKHBOLAMTPAPRTNDOMNGUVEMEMP limitinteger- Maximum number of categories to return per call. The API default is 1000 and the maximum is 1000.
offsetinteger- Number of categories to skip, for paging. The API default is 0.
semrush_list_location_imagesList the images of a location with ID, type, URL, caption and creation date.Read-onlyList Location Images
List the images of a location with ID, type, URL, caption and creation date. Use it to find an image_id for update_location_image or delete_location_image.
Inputs
location_idstringrequired- 32-character hex ID of the Local location. Find it with list_locations. Example: 1d21ceab55d740709311ec9b8a12c01e.
image_typesstring- Comma-separated image types to include: PHOTO, PROFILE, COVER. Leave empty for all. Example: PHOTO,COVER.
limitinteger- Maximum number of images to return per call. The API default is 50 and the maximum is 50.
offsetinteger- Number of images to skip, for paging. The API default is 0.
semrush_list_location_listingsList the directory listings (Google Business Profile, Apple Maps, Yelp and others) for a location, with listing ID, name, status, whether it can be toggled and its public URL.Read-onlyList Location Listings
List the directory listings (Google Business Profile, Apple Maps, Yelp and others) for a location, with listing ID, name, status, whether it can be toggled and its public URL. Use it to find a listing_id for enable_listing or disable_listing. Errors for frozen locations.
Inputs
location_idstringrequired- 32-character hex ID of the Local location. Find it with list_locations. Example: 1d21ceab55d740709311ec9b8a12c01e.
listing_statusesstring- Comma-separated statuses to include: CONNECTED, SUBMITTED, UNAVAILABLE, DISCONNECTED, PROCESSING. Leave empty for all. Example: CONNECTED,PROCESSING.
semrush_list_locationsList the business locations on your account with the same fields as get_location.Read-onlyList Locations
List the business locations on your account with the same fields as get_location. Filter by status or frozen state and page with limit and offset. Use it to find a location_id; use get_location for one location.
Inputs
frozenboolean- true returns only frozen locations (overdue payment), false only non-frozen ones. Leave empty for both.
limitinteger- Maximum number of locations to return per call. The API default is 50 and the maximum is 50.
location_statusesstring- Comma-separated statuses to include: COMPLETED, PROCESSING, FAILED. Leave empty for all. Example: COMPLETED,FAILED.
offsetinteger- Number of locations to skip, for paging. The API default is 0.
semrush_list_map_rank_campaignsList Map Rank Tracker campaigns with business, grid settings, keyword and point counts, average position and share of voice, and status, paged.Read-onlyList Map Rank Campaigns
List Map Rank Tracker campaigns with business, grid settings, keyword and point counts, average position and share of voice, and status, paged. Use it to find a campaign ID; use get_map_rank_campaign for full details. Does not use API units.
Inputs
onlyMarkedForRemovalboolean- true returns only campaigns scheduled for deletion.
pageinteger- Zero-based page index. The API default is 0.
querystring- Filter campaigns by name or business address, up to 255 characters. Example: pizza.
sizeinteger- Number of items per page. The API default is 10.
sortstring- Sort as field,direction. Fields: createdAt, businessName; directions ASC or DESC. The API default is createdAt,DESC.
semrush_list_map_rank_keywordsList a campaign's keywords with their ID, name and collection status for a report date.Read-onlyList Map Rank Keywords
List a campaign's keywords with their ID, name and collection status for a report date. Use it to get the keywordId for get_map_rank_heatmap, get_map_rank_metrics or get_map_rank_competitors.
Inputs
campaign_idstringrequired- ID of the Map Rank Tracker campaign, from list_map_rank_campaigns. Example: 382738af-b6ae-4002-b6f6-c4c907b2b024.
reportDatestring- Report timestamp in ISO 8601, exactly as listed in the campaign's reportDates. Example: 2024-07-05T12:39:22.611Z. Defaults to the latest report.
semrush_list_projectsList the Semrush projects (folders) you can access, with project ID, name, domain, owner, your permissions and the tools attached such as site_audit or position_tracking.Read-onlyList Projects
List the Semrush projects (folders) you can access, with project ID, name, domain, owner, your permissions and the tools attached such as site_audit or position_tracking. Use it to find a project ID; use get_project for one project. Requires the SEO Business subscription.
Inputs
limitinteger- Maximum number of projects to return. The API default is 100 and the maximum is 1000.
offsetinteger- Number of projects to skip before returning results. The API default is 0.
scopestring- Which projects to return: OWN (owned by you, the API default), ALL (everything you can access), SHARED (shared with you) or CORPORATE (under your corporate account).one of
OWNALLSHAREDCORPORATE
semrush_list_referring_domainsList the domains that link to a target, with backlink count, domain score, country, IP address, follow status, new or lost flags and first and last seen dates.Read-onlyList Referring Domains
List the domains that link to a target, with backlink count, domain score, country, IP address, follow status, new or lost flags and first and last seen dates. Use it to see who links to a site; use list_backlinks for the individual links or list_referring_ips for IP addresses. Costs 40 API units per returned row.
Inputs
scopestringrequired- Which part of the target to analyze: ROOT_DOMAIN, SUBDOMAIN, SUBFOLDER, PAGE. ROOT_DOMAIN covers the whole domain and its subdomains; PAGE covers one exact URL.one of
ROOT_DOMAINSUBDOMAINSUBFOLDERPAGE urlstringrequired- Domain, subdomain, subfolder or full page URL to analyze, with or without protocol (max 2000 characters). It must match the chosen scope. Example: example.com.
directionstring- Sort direction, ASC or DESC. The API default is DESC.one of
ASCDESC fieldsstring- Comma-separated names of the response fields to return; leave empty to return all fields. Example: domain,backlinks_count,domain_score.
filterstring- Advanced filter over the returned fields. Combine conditions with AND and OR, group with parentheses, and use LIKE or NOT LIKE with % as a wildcard. Strings take single or double quotes. Example: domain_score > 50.
limitinteger- Maximum number of rows to return. The API default is 100. Each returned row is billed in API units, so keep it small when exploring.
offsetinteger- Number of rows to skip, for paging through a long result. Combine with limit.
order_bystring- Response field to sort by; it must be one of the returned fields. The API default is backlinks_count. Example: domain_score.
semrush_list_referring_ipsList the IP addresses of servers that host pages linking to a target, with backlink count, referring domain count, country and first and last seen dates.Read-onlyList Referring IPs
List the IP addresses of servers that host pages linking to a target, with backlink count, referring domain count, country and first and last seen dates. Use it to spot clustered link sources; use list_referring_domains for the linking domains themselves. Costs 20 API units per returned row.
Inputs
scopestringrequired- Which part of the target to analyze: ROOT_DOMAIN, SUBDOMAIN, SUBFOLDER, PAGE. ROOT_DOMAIN covers the whole domain and its subdomains; PAGE covers one exact URL.one of
ROOT_DOMAINSUBDOMAINSUBFOLDERPAGE urlstringrequired- Domain, subdomain, subfolder or full page URL to analyze, with or without protocol (max 2000 characters). It must match the chosen scope. Example: example.com.
directionstring- Sort direction, ASC or DESC. The API default is DESC.one of
ASCDESC fieldsstring- Comma-separated names of the response fields to return; leave empty to return all fields. Example: ip_address,domains_count,country.
filterstring- Advanced filter over the returned fields. Combine conditions with AND and OR, group with parentheses, and use LIKE or NOT LIKE with % as a wildcard. Strings take single or double quotes. Example: ip_address LIKE '192.168.1.%'.
limitinteger- Maximum number of rows to return. The API default is 100. Each returned row is billed in API units, so keep it small when exploring.
offsetinteger- Number of rows to skip, for paging through a long result. Combine with limit.
order_bystring- Response field to sort by; it must be one of the returned fields. The API default is domains_count. Example: backlinks_count.
semrush_list_reviewsList customer reviews for a location with title, text, star rating, author, publisher, link, reply capabilities and the owner's comments.Read-onlyList Reviews
List customer reviews for a location with title, text, star rating, author, publisher, link, reply capabilities and the owner's comments. Filter by rating or reply state. Use get_review_overview for counts only. The location must be connected to Google Business Profile and not frozen.
Inputs
location_idstringrequired- 32-character hex ID of the Local location. Find it with list_locations. Example: 1d21ceab55d740709311ec9b8a12c01e.
answeredboolean- true returns only reviews that have a reply, false only unanswered ones. Leave empty for both.
auto_repliedboolean- true returns only reviews answered by auto-reply, false only the rest. Leave empty for both.
limitinteger- Maximum number of reviews to return per call. The API default is 50 and the maximum is 250.
offsetinteger- Number of reviews to skip, for paging. The API default is 0.
ratingsstring- Comma-separated star ratings to include, from 0 (no rating) to 5. Example: 4,5.
semrush_add_review_commentReply to a review.WriteAdd Review Comment
Reply to a review. Returns the new comment. Check supports_reply on the review in list_reviews first, since not every publisher allows replies. Use update_review_comment to edit a reply later.
Inputs
contentstringrequired- Text of the reply, at most 2000 characters. Example: Thank you for your feedback.
location_idstringrequired- 32-character hex ID of the Local location. Find it with list_locations. Example: 1d21ceab55d740709311ec9b8a12c01e. It must be the location the review belongs to.
review_idstringrequired- ID of the review, from list_reviews. Example: review-abc123.
semrush_collect_map_rank_campaignStart a data collection run for a campaign now.WriteCollect Map Rank Campaign
Start a data collection run for a campaign now. Uses Map Rank Tracker credits equal to grid points times keywords, so check get_map_rank_limits first. Returns the report timestamp being collected; read results later with get_map_rank_heatmap.
Inputs
campaign_idstringrequired- ID of the Map Rank Tracker campaign, from list_map_rank_campaigns. Example: 382738af-b6ae-4002-b6f6-c4c907b2b024.
reportDatestring- Timestamp to give this report, in ISO 8601. The current server time is used when omitted. Example: 2026-02-25T17:30:00Z.
semrush_create_locationCreate a business location in Semrush Local Listing Management.WriteCreate Location
Create a business location in Semrush Local Listing Management. Returns the location with its location_id and status PROCESSING. Consumes one pre-paid Local Pro limit unless validate_only is true, and creation can take up to 7 days, so poll get_location for COMPLETED. Calls must run one at a time; a concurrent call returns 429.
Inputs
business_namestringrequired- Official public name of the business, up to 125 characters. Example: Delta Manor Apartments.
countrystringrequired- Two-letter ISO 3166-1 country code where the business is located; only the countries supported by Local are accepted. Example: US.one of
USAUFRDEGBCAINESITNLBRATBEDKFINOPLSECHJPMXILNZSGZATRAEHKIDVNPKCOIEBDMYSAROCLPHPTNGGRTHARPEKEHUCZRSNPLTUABGECCYHREELVISSKSIAMADPYGYEGMVUYSRKHBOLAMTPAPRTNDOMNGUVEMEMP address_line_1string- Street address with house number and street name, up to 190 characters. Example: 111 W Main St.
address_line_2string- Supplemental address information such as suite or floor, up to 64 characters. Example: Second floor.
business_hoursobject- Weekly opening hours as an object with keys monday_hours through sunday_hours, each a list of from and to ranges in HH:MM. An empty list means closed. Example: {"monday_hours": [{"from": "08:00", "to": "17:00"}]}.
category_idsarray- Up to 10 Local category IDs, the first being the primary category. Get valid IDs from list_location_categories. Example: ["b871306d44c145a0b781ed2cb3b19bf1"].
citystring- City or locality name, up to 64 characters. Example: Delta.
coordinatesobject- Latitude and longitude of the business as an object. Example: {"latitude": 39.3522, "longitude": -112.5777}.
descriptionstring- Description of the business and its services, 10 to 750 characters. Example: Welcome to our family-run apartment community.
featured_messagestring- Short promotional message shown on the profile, up to 50 characters. Example: Call Today.
featured_message_urlstring- Call-to-action link for the featured message, up to 255 characters. Example: https://www.example.com/offer.
gbp_attributesarray- Google Business Profile attributes as objects with id and the chosen option_id, both from list_gbp_attributes. Example: [{"id": "has_wheelchair_accessible_entrance", "option_id": "true"}].
gbp_category_idsarray- Up to 10 Google Business Profile category IDs, first is primary. Get valid IDs from list_gbp_categories. Example: ["46e6afbab7cd408bae8d392184a5627e"].
instagram_usernamestring- Instagram handle without @, up to 30 characters. Example: semrush.
more_hoursarray- Extra hour types such as DELIVERY or TAKEOUT, as objects with type and hours (same shape as business_hours). Valid types come from get_location_more_hour_types. Example: [{"type": "DELIVERY", "hours": {"monday_hours": [{"from": "09:00", "to": "20:00"}]}}].
payment_optionsarray- Accepted payment methods; valid values come from get_location_payment_options. Example: ["CASH", "CREDIT_CARD"].
phone_numberstring- Primary phone in international format. Example: +1 435 864 3376.
regionstring- State, province or prefecture. Required for Canada, Australia, Brazil, India and the US; do not set it for other countries. Example: UT.
reopen_datestring- Future date (YYYY-MM-DD) when a temporarily closed location reopens. Example: 2026-12-01.
service_area_placesarray- Areas the business serves, as objects with name and Google place_id. Required when suppress_address is true. Example: [{"name": "Delta, UT, USA", "place_id": "ChIJQRRb_PG0TIcRwoI8h4xTvTM"}].
special_hoursarray- Date-specific hours as a list of objects with type (CLOSED, OPENED_ALL_DAY or RANGE), day (YYYY-MM-DD, unique per entry) and times (only for RANGE). Example: [{"type": "CLOSED", "day": "2026-12-25"}].
suppress_addressboolean- Set true to hide the street address from public listings; service_area_places must then be filled in.
twitter_usernamestring- X (Twitter) handle without @, up to 15 characters. Example: semrush.
validate_onlyboolean- Set true to validate the request without applying any change or using up your Local Pro limit. Recommended before the first real call.
website_urlstring- Business website; must start with https:// and be at most 255 characters. Example: https://www.example.com.
youtube_videostring- URL of a YouTube video about the business, up to 150 characters. Example: https://www.youtube.com/watch?v=ndJB4J951_k.
zipstring- Postal or ZIP code. Required for most supported countries. Example: 84624.
semrush_create_location_imageAdd an image to a location from base64 content.WriteCreate Location Image
Add an image to a location from base64 content. Returns the image ID, type, URL and caption. Use list_location_images to see existing images. Fails for frozen locations.
Inputs
contentstringrequired- Base64-encoded image data in JPEG, JPG or PNG format, at most 4 MB.
location_idstringrequired- 32-character hex ID of the Local location. Find it with list_locations. Example: 1d21ceab55d740709311ec9b8a12c01e.
typestringrequired- Intended use: PHOTO (270x270 to 5000x5000 px), PROFILE (250x250 to 5000x5000 px) or COVER (480x270 to 2120x1192 px).one of
PHOTOPROFILECOVER descriptionstring- Caption describing the image, up to 255 characters. Example: Front entrance of the store.
semrush_create_map_rank_campaignCreate a Map Rank Tracker campaign for a Google business and keywords.WriteCreate Map Rank Campaign
Create a Map Rank Tracker campaign for a Google business and keywords. By default it builds a 5x5 grid with a 1.5 km radius around the business; pass gridSettings or points (not both) to customize. Collection is manual unless collectingFrequency is set; use collect_map_rank_campaign to run it. Does not use API units.
Inputs
keywordsarrayrequired- 1 to 100 keywords to track, each up to 255 characters. Example: ["restaurant", "pizza near me"].
placeIdstringrequired- Google Place ID of the business to track, found with Google's Place ID Finder. Example: ChIJ0WHHXq8H9YgRdNsk3gsXmxg.
collectingFrequencyobject- Automatic collection schedule: frequency (WEEKLY or MONTHLY), interval (positive integer), positions (days: 1 to 7 for weekly, 1 to 28 for monthly), optional time (HH:mm, default 11:00) and enable (default false). Example: {"frequency": "MONTHLY", "interval": 1, "positions": [1], "time": "10:00", "enable": true}.
gridSettingsobject- Custom grid, not allowed together with points. Needs template (5x5, 7x7, 9x9, 11x11, 13x13 or 15x15), unit (KM or MILES), distance (0.1 to 100, the radius to the grid edge) and an optional basePoint with lat and lng (defaults to the business). Example: {"template": "5x5", "unit": "KM", "distance": 1.5}.
namestring- Custom campaign name; the business name is used when omitted. Example: Demo Campaign.
pointsarray- Custom tracking points, not allowed together with gridSettings. Each has index, optional isEnabled (default true) and coordinates with lat and lng. Example: [{"index": 0, "coordinates": {"lat": 33.7609, "lng": -84.3113}}].
semrush_create_projectCreate a Semrush project (folder) for a domain.WriteCreate Project
Create a Semrush project (folder) for a domain. Returns the new project with its assigned ID and permissions. Needs a read and write API key; fails once the account's project limit is reached.
Inputs
domainstringrequired- Domain of the new project without protocol. Example: example.com.
project_namestringrequired- Human-readable name for the project. These characters are not allowed: ~ ` ! # % ' ^ & * = [ ] \ / { } | " : < > ?. Example: My project.
semrush_disable_listingDisable a location listing so it stops being distributed.WriteDisable Listing
Disable a location listing so it stops being distributed. Works only on listings where controllable is true and status is CONNECTED, SUBMITTED or UNAVAILABLE. Use enable_listing to reverse it.
Inputs
listing_idstringrequired- ID of the listing, from list_location_listings. Example: b1c2d3e4f5a64789abcdef0123456789.
semrush_enable_listingEnable a location listing that is currently disabled.WriteEnable Listing
Enable a location listing that is currently disabled. Works only on listings where controllable is true and status is DISCONNECTED. Use disable_listing to reverse it.
Inputs
listing_idstringrequired- ID of the listing, from list_location_listings. Example: b1c2d3e4f5a64789abcdef0123456789.
semrush_update_locationUpdate fields of a business location.WriteUpdate Location
Update fields of a business location. Only fields named in update_mask are changed, using the values you pass. Returns the updated location. Use get_location to read current values first; use create_location for a new location.
- Idempotent
Inputs
location_idstringrequired- 32-character hex ID of the Local location. Find it with list_locations. Example: 1d21ceab55d740709311ec9b8a12c01e.
update_maskstringrequired- Comma-separated names of the fields to change; must be non-empty, and each name needs its value in the input. Allowed: business_name, address_line_1, address_line_2, city, zip, phone_number, category_ids, region, featured_message, featured_message_url, website_url, description, instagram_username, twitter_username, business_hours, special_hours, service_area_places, suppress_address, coordinates, youtube_video, reopen_date, payment_options, more_hours, gbp_category_ids, gbp_attributes. Example: business_name,address_line_1.
address_line_1string- Street address with house number and street name, up to 190 characters. Example: 111 W Main St.
address_line_2string- Supplemental address information such as suite or floor, up to 64 characters. Example: Second floor.
business_hoursobject- Weekly opening hours as an object with keys monday_hours through sunday_hours, each a list of from and to ranges in HH:MM. An empty list means closed. Example: {"monday_hours": [{"from": "08:00", "to": "17:00"}]}.
business_namestring- Official public name of the business, up to 125 characters. Example: Delta Manor Apartments.
category_idsarray- Up to 10 Local category IDs, the first being the primary category. Get valid IDs from list_location_categories. Example: ["b871306d44c145a0b781ed2cb3b19bf1"].
citystring- City or locality name, up to 64 characters. Example: Delta.
coordinatesobject- Latitude and longitude of the business as an object. Example: {"latitude": 39.3522, "longitude": -112.5777}.
descriptionstring- Description of the business and its services, 10 to 750 characters. Example: Welcome to our family-run apartment community.
featured_messagestring- Short promotional message shown on the profile, up to 50 characters. Example: Call Today.
featured_message_urlstring- Call-to-action link for the featured message, up to 255 characters. Example: https://www.example.com/offer.
gbp_attributesarray- Google Business Profile attributes as objects with id and the chosen option_id, both from list_gbp_attributes. Example: [{"id": "has_wheelchair_accessible_entrance", "option_id": "true"}].
gbp_category_idsarray- Up to 10 Google Business Profile category IDs, first is primary. Get valid IDs from list_gbp_categories. Example: ["46e6afbab7cd408bae8d392184a5627e"].
instagram_usernamestring- Instagram handle without @, up to 30 characters. Example: semrush.
more_hoursarray- Extra hour types such as DELIVERY or TAKEOUT, as objects with type and hours (same shape as business_hours). Valid types come from get_location_more_hour_types. Example: [{"type": "DELIVERY", "hours": {"monday_hours": [{"from": "09:00", "to": "20:00"}]}}].
payment_optionsarray- Accepted payment methods; valid values come from get_location_payment_options. Example: ["CASH", "CREDIT_CARD"].
phone_numberstring- Primary phone in international format. Example: +1 435 864 3376.
regionstring- State, province or prefecture. Required for Canada, Australia, Brazil, India and the US; do not set it for other countries. Example: UT.
reopen_datestring- Future date (YYYY-MM-DD) when a temporarily closed location reopens. Example: 2026-12-01.
service_area_placesarray- Areas the business serves, as objects with name and Google place_id. Required when suppress_address is true. Example: [{"name": "Delta, UT, USA", "place_id": "ChIJQRRb_PG0TIcRwoI8h4xTvTM"}].
special_hoursarray- Date-specific hours as a list of objects with type (CLOSED, OPENED_ALL_DAY or RANGE), day (YYYY-MM-DD, unique per entry) and times (only for RANGE). Example: [{"type": "CLOSED", "day": "2026-12-25"}].
suppress_addressboolean- Set true to hide the street address from public listings; service_area_places must then be filled in.
twitter_usernamestring- X (Twitter) handle without @, up to 15 characters. Example: semrush.
validate_onlyboolean- Set true to validate the request without applying any change or using up your Local Pro limit. Recommended before the first real call.
website_urlstring- Business website; must start with https:// and be at most 255 characters. Example: https://www.example.com.
youtube_videostring- URL of a YouTube video about the business, up to 150 characters. Example: https://www.youtube.com/watch?v=ndJB4J951_k.
zipstring- Postal or ZIP code. Required for most supported countries. Example: 84624.
semrush_update_location_imageChange the caption of an existing location image.WriteUpdate Location Image
Change the caption of an existing location image. Returns the updated image. Use create_location_image to add a new one.
- Idempotent
Inputs
image_idstringrequired- ID of the image, from list_location_images. Example: a1b2c3d4e5f64789abcdef0123456789.
descriptionstring- New caption for the image, up to 255 characters. Example: Front entrance of our downtown location.
semrush_update_map_rank_campaignPartially update a Map Rank Tracker campaign: only the fields you pass change.WriteUpdate Map Rank Campaign
Partially update a Map Rank Tracker campaign: only the fields you pass change. Passing keywords replaces the whole keyword list; passing gridSettings or points (not both) redefines the tracking area. Returns the updated campaign. Does not use API units.
- Idempotent
Inputs
campaign_idstringrequired- ID of the Map Rank Tracker campaign, from list_map_rank_campaigns. Example: 382738af-b6ae-4002-b6f6-c4c907b2b024.
collectingFrequencyobject- New automatic collection schedule: frequency (WEEKLY or MONTHLY), interval, positions, time (HH:mm) and enable. Example: {"frequency": "WEEKLY", "interval": 1, "positions": [3], "time": "12:00", "enable": true}.
gridSettingsobject- New grid, not allowed together with points: template (5x5 to 15x15), unit (KM or MILES), distance (0.1 to 100) and optional basePoint (defaults to the current base point). Example: {"template": "7x7", "unit": "KM", "distance": 2}.
keywordsarray- Complete new keyword list of up to 100 keywords; it replaces the existing list. Example: ["restaurant", "cafe"].
namestring- New campaign name. Example: Updated Demo Campaign.
pointsarray- New custom tracking points that override the existing ones, not allowed together with gridSettings. Each has index, optional isEnabled and coordinates with lat and lng. Example: [{"index": 0, "coordinates": {"lat": 33.7609, "lng": -84.3113}}].
semrush_update_projectRename a Semrush project.WriteUpdate Project
Rename a Semrush project. Only fields you pass change; the response is the updated project. Use create_project to add a project or delete_project to remove one.
- Idempotent
Inputs
project_idintegerrequired- Numeric ID of the project (folder). Find it with list_projects or in the project URL on semrush.com/projects/<id>. Example: 643526670283248.
project_namestring- New name for the project; leave empty to keep the current name. These characters are not allowed: ~ ` ! # % ' ^ & * = [ ] \ / { } | " : < > ?. Example: My website project.
semrush_update_review_auto_reply_configReplace the automatic review-reply settings of a location.WriteUpdate Review Auto-Reply Config
Replace the automatic review-reply settings of a location. Settings you leave empty reset to their defaults, so pass every setting you want to keep; read them first with get_review_auto_reply_config.
- Idempotent
Inputs
location_idstringrequired- 32-character hex ID of the Local location. Find it with list_locations. Example: 1d21ceab55d740709311ec9b8a12c01e.
language_strategystring- How the reply language is chosen: SPECIFIC_LANGUAGE (use preferred_language_code) or REVIEW_LANGUAGE (match the review). Resets to SPECIFIC_LANGUAGE when omitted.one of
SPECIFIC_LANGUAGEREVIEW_LANGUAGE preferred_language_codestring- Language name for replies, used only when language_strategy is SPECIFIC_LANGUAGE, for example ENGLISH. When omitted the API picks AUTO, the location's country language.
reply_to_negative_reviewsboolean- Turn automatic replies on or off for 1, 2 and 3 star reviews and unrated reviews. Resets to false when omitted.
reply_to_positive_reviewsboolean- Turn automatic replies on or off for 4 and 5 star reviews. Resets to false when omitted.
reply_tonestring- Tone of generated replies: FRIENDLY, PROFESSIONAL, CALM or ENERGETIC. Resets to FRIENDLY when omitted.one of
FRIENDLYPROFESSIONALCALMENERGETIC
semrush_update_review_commentEdit the text of an existing reply on a review.WriteUpdate Review Comment
Edit the text of an existing reply on a review. Returns the updated comment. Check supports_comment_edit on the review in list_reviews first.
- Idempotent
Inputs
comment_idstringrequired- ID of the comment, from the comments array in list_reviews. Example: comment-789.
contentstringrequired- New text of the reply, at most 2000 characters. Example: Thanks again for your feedback.
location_idstringrequired- 32-character hex ID of the Local location. Find it with list_locations. Example: 1d21ceab55d740709311ec9b8a12c01e. It must be the location the review belongs to.
review_idstringrequired- ID of the review, from list_reviews. Example: review-abc123.
semrush_delete_locationPermanently delete a business location.DestructiveDelete Location
Permanently delete a business location. Allowed only 30 days or more after creation. This cannot be undone; confirm the ID with get_location first.
- Idempotent
Inputs
location_idstringrequired- 32-character hex ID of the Local location. Find it with list_locations. Example: 1d21ceab55d740709311ec9b8a12c01e.
semrush_delete_location_imagePermanently remove an image from a location's profile.DestructiveDelete Location Image
Permanently remove an image from a location's profile. This cannot be undone; check the ID with list_location_images first.
- Idempotent
Inputs
image_idstringrequired- ID of the image, from list_location_images. Example: a1b2c3d4e5f64789abcdef0123456789.
semrush_delete_map_rank_campaignPermanently delete a Map Rank Tracker campaign and all its collected data.DestructiveDelete Map Rank Campaign
Permanently delete a Map Rank Tracker campaign and all its collected data. This cannot be undone; confirm the ID with get_map_rank_campaign first.
- Idempotent
Inputs
campaign_idstringrequired- ID of the Map Rank Tracker campaign, from list_map_rank_campaigns. Example: 382738af-b6ae-4002-b6f6-c4c907b2b024.
semrush_delete_projectPermanently delete a Semrush project and all its tools, settings and history.DestructiveDelete Project
Permanently delete a Semrush project and all its tools, settings and history. Returns the deleted project ID. This cannot be undone; confirm the project ID with get_project first.
- Idempotent
Inputs
project_idintegerrequired- Numeric ID of the project (folder). Find it with list_projects or in the project URL on semrush.com/projects/<id>. Example: 643526670283248.
semrush_delete_review_commentPermanently delete a reply from a review.DestructiveDelete Review Comment
Permanently delete a reply from a review. Check supports_comment_removal on the review in list_reviews first. This cannot be undone.
- Idempotent
Inputs
comment_idstringrequired- ID of the comment, from the comments array in list_reviews. Example: comment-789.
location_idstringrequired- 32-character hex ID of the Local location. Find it with list_locations. Example: 1d21ceab55d740709311ec9b8a12c01e. It must be the location the review belongs to.
review_idstringrequired- ID of the review, from list_reviews. Example: review-abc123.
No tools match.