Semrush API v3 and v4 comparison reference
This reference maps Semrush API Version 3 (v3) endpoints to Version 4 (v4) endpoints.
Most Version 3 reports share endpoints and use the type query parameter to select a report. Their entries include the endpoint and type value. In Version 4, the endpoint URL identifies the operation.
Jump to Method mappingMethod mapping
- Coming soon in
v4: Av4equivalent is planned. Descriptions for these rows refer to planned functionality. - Not covered by
v4: Nov4equivalent is planned. Contact Support to discuss alternatives.
Jump to BacklinksBacklinks
v3 endpoint
v4 endpoint
What v4 provides
Jump to Keyword reportsKeyword reports
v3 endpoint
v4 endpoint
What v4 provides
is_question=trueJump to Overview reportsOverview reports
v3 endpoint
v4 endpoint
What v4 provides
Jump to Domain reportsDomain reports
v3 endpoint
v4 endpoint
What v4 provides
Jump to Subdomain reportsSubdomain reports
v3 endpoint
v4 endpoint
What v4 provides
Jump to Subfolder reportsSubfolder reports
v3 endpoint
v4 endpoint
What v4 provides
Jump to URL reportsURL reports
v3 endpoint
v4 endpoint
What v4 provides
Jump to Project managementProject management
v3 endpoint
v4 endpoint
What v4 provides
Jump to Position TrackingPosition Tracking
v3 endpoint
v4 endpoint
What v4 provides
v4 doesn’t return keyword counts for each individual position (1–100)v4 doesn’t return keyword counts for each individual position (1–100)Jump to Site AuditSite Audit
v3 endpoint
v4 endpoint
What v4 provides
PUT) or updates only the settings named in update_mask (PATCH)GET /apis/v4/site-audit/v1/campaigns/:campaign_id/overviewGET /apis/v4/site-audit/v1/campaigns/:campaign_id/settingsGET /apis/v4/site-audit/v1/campaigns/:campaign_id/progressGET /apis/v4/site-audit/v1/campaigns/:campaign_id/audit-reports/:audit_report_id/overviewGET /apis/v4/site-audit/v1/campaigns/:campaign_id/linkingv4.v4 identifies issues by self-descriptive issue_type values, such as INTERNAL_LINK_BROKENurlJump to Trends APITrends API
v3 endpoint
v4 endpoint
What v4 provides
Jump to Account and API unitsAccount and API units
v3 endpoint
v4 endpoint
What v4 provides
v4.Jump to Request parameter differencesRequest parameter differences
The tables summarize selected request parameter changes. Refer to the linked endpoint pages for complete request requirements.
Jump to BacklinksBacklinks
v3 endpoint
v4 endpoint
v3 input
v4 input
Change
target, target_typeurl, scopeurl replaces target. scope replaces target_type, and its values change: root_domain becomes ROOT_DOMAIN, domain becomes SUBDOMAIN, and url becomes PAGE. v4 adds SUBFOLDER scope.target, target_typeurl, scopev3 accepts root domains only. v4 also accepts subdomains and pages through url and scope.target, target_typedomainv4 accepts a domain through domain. There’s no separate target-type parameter.targets[], target_types[], export_columns, display_sort, display_limit, display_offset, display_filterurls, scope, order_by, direction, limit, offset, filterscope applies to every URL in urls. order_by and direction replace display_sort. limit, offset, and filter replace display_limit, display_offset, and display_filter. v4 has no column-selection parameter and returns JSON only.targets[], target_types[], export_columnsurls, scope, fieldsscope applies to every URL in urls. fields replaces export_columns for selecting response fields. The target limit drops from 200 in v3 to 10 in v4.Jump to Keyword reportsKeyword reports
v3 endpoint
v4 endpoint
v3 input
v4 input
Change
phrase, databasekeyword, countrykeyword replaces phrase. country replaces database and takes a two-letter code. Each request accepts one keyword and one country.display_date in the YYYYMM15 formatmonth in the YYYY-MM formatmonth replaces display_date. The date format changes from YYYYMM15 to YYYY-MM.export_escape, export_decode, export_columnsformatformat selects JSON or CSV output. v4 doesn’t support export_escape, export_decode, or export_columns.phrase, databasekeyword, countrykeyword for the seed and country for the two-letter country code.display_limit, display_offsetlimit, offsetlimit is the number of rows to return, without adding offset. The default is 100 and the maximum is 1,000. limit + offset can’t exceed 50,000.display_sort, display_filterorder_by, direction, filterv4 field names for sorting and filtering. For example, order_by=search_volume&direction=DESC. filter also supports words_count but doesn’t support trends. order_by=relevance works on Related only. Filter syntax and supported operators change.export_columns, export_escape, export_decodeformatformat=csv for CSV. Column selection and the v3 export options aren’t supported.type=phrase_questionsis_question=trueis_question=true on the Broad Match endpoint to return question keywords.Jump to Project managementProject management
v3 endpoint
v4 endpoint
v3 input
v4 input
Change
filterscope, limit, offsetscope replaces filter and uses uppercase values. limit and offset control pagination.idproject_id path parameterid to project_id.url, optional project_namedomain, required project_namedomain replaces url. project_name becomes required.project_id, required project_nameproject_id path parameter, optional project_name body parameterproject_id moves to the URL path. project_name becomes optional. Omitting it leaves the name unchanged.Jump to Domain AnalyticsDomain Analytics
v3 endpoint
v4 endpoint
v3 input
v4 input
Change
domain, subdomain, subfolder or urlurl, required scopeurl for the target and scope=ROOT_DOMAIN, SUBDOMAIN, SUBFOLDER or PAGE for its scope.databasecountry and device_typeDESKTOP or MOBILE database. Use gb for the United Kingdom. uk is rejected.display_date in the YYYYMM15 formatmonth in the YYYY-MM formatmonth selects a monthly snapshot. Omit it to use the latest available monthly snapshot.typedate_from, date_to in the YYYY-MM formatdisplay_dailyv4 endpoints return monthly data and don’t accept display_daily.export_columns, display_limit, display_offsetfields, limit, offsetfields selects response fields. limit is the number of rows to return, without adding offset. The default is 100 and the maximum is 5,000. limit + offset can’t exceed 500,000.display_sort, display_filterorder_by, direction, filterorder_by=volume&direction=DESC or filter=volume > 1000. Filter syntax and supported fields change.display_positions_type or positions_type, default organicposition_type, default both typesposition_type=ORGANIC for regular organic results or SERP_FEATURE for SERP-feature positions. Omit it to return both.display_positions=new, lost, rise or fallchange_types, base_month, comparison_monthNEW, LOST, IMPROVED, DECLINED and UNCHANGED. If you omit change_types, all types are returned. Specify the two months to compare.display_positions=new, lost, rise or fallchange_types and monthmonth. Values are NEW, LOST, IMPROVED, DECLINED and UNCHANGED. The default is the first four.phrase, databasekeyword, required country, required device_typekeyword replaces phrase. Select the country and device database separately.month per requestdomains expression for up to five domainstarget_url, target_scope, competitor_url, competitor_scope, channel, intersection_typeORGANIC, ADWORDS or PLA. Use separate pairwise requests for more targets and combine the results.display_sort with change columnsorder_by, direction, filter with difference fieldsorganic_traffic_difference to find winners and losers.Jump to Position TrackingPosition Tracking
v3 endpoint
v4 endpoint
v3 input
v4 input
Change
projectID path parameter, tracking_url, tracking_url_type, location_id, campaign settingsproject_id, title, engine, device, location_id, tracking_url, keywordsproject_id moves to the JSON body. v4 uses tracking_url to define the scope, instead of tracking_url_type in v3. example.com tracks a root domain, while https://example.com tracks an exact page.campaignID path parametercampaign_id path parameter; weekly_notification JSON body fieldPATCH endpoint replaces the enable and disable endpoints. The JSON body field weekly_notification controls whether emails are sent.campaignID; keywords arraycampaign_id path parameter; JSON keywords arraycampaignID to campaign_id. Adding keywords changes from PUT to POST and still uses objects with keyword and optional tags. Deleting keywords changes from keyword objects to keyword strings. Adding and deleting keywords accept up to 10,000 keywords per request.campaignID, keywords, tagscampaign_id path parameter; JSON bindings array of tag-to-keyword objectsbindings array associates a tag with its keywords.campaignID; competitor domainscampaign_id path parameter; competitors objects with competitor_url when adding, competitor_ids when deletingcompetitor_url. Deleting competitors takes competitor_ids returned by the v4 Get Competitors endpoint.projectID path parameterproject_id query parameterproject_id query parameter. Omitting it returns all campaigns available to the requester.filter_engineengineengine replaces filter_engine and becomes required. Values are GOOGLE, BING, or BAIDU.campaignID, type=tracking_campaign_datescampaign_id path parameter; required date_from and date_to in the YYYY-MM-DD formattype=tracking_campaign_dates. date_from and date_to are required.type, campaignID, date_begin, date_end, display_limit, display_offsetcampaign_id, channel, base_date, comparison_date, date_from, date_to, limit, offsetchannel=ORGANIC or channel=PAID selects organic or Google Ads data. channel is required on every report endpoint. Get Seo Overview, Get Seo Overview Top Counters, Get Seo Competitors, and Get Seo Landing Pages require base_date and comparison_date. Get Seo Overview Trend requires date_from and date_to. Dates change from the YYYYMMDD format to the YYYY-MM-DD format. On Get Seo Overview, Get Seo Competitors, and Get Seo Landing Pages, limit and offset replace display_limit and display_offset.url, business_nametarget_url, target_business_namev4 Overview request for each target_url. Omit target_url to use the campaign target. URL masks use *. Business-name matching applies to local results without URLs.use_volumevolume_typeNATIONAL, REGIONAL or LOCAL. The default changes from the most local available level to the campaign setting. Applies to Google campaigns only.Jump to Site AuditSite Audit
v3 endpoint
v4 endpoint
v3 input
v4 input
Change
id path parameter, crawl settings in the bodyproject_id query parameter, settings body objectproject_id selects the project. Nest crawl settings in settings.pageLimit, notify, crawlSubdomains, removedParameterspage_limit, email_notification_enabled, crawl_subdomains, removed_parametersv4 puts these fields in settings.allow, disallowallow, disallow in path_maskspath_masks, inside settings.scheduleDayschedulev3 uses 1–7 for weekly audits and 0 for manual starts. v4 uses WEEKLY_MONDAY through WEEKLY_SUNDAY and adds DAILY. Omit schedule when creating a campaign for manual starts.userAgentTypeuser_agent_type7 (SiteAuditBot Desktop) becomes SITE_AUDIT_DESKTOP. 8 (SiteAuditBot Mobile) becomes SITE_AUDIT_MOBILE. 2 (GoogleBot Desktop), 3 (GoogleBot Mobile), and 9 (OpenAI-Search) aren’t supported. Include user_agent_type when creating a campaign or replacing all its settings.respectCrawlDelayv4 always follows the Crawl-delay directive in robots.txt.POST with campaign settingsPUT or PATCH with settingsPUT replaces all settings and resets omitted fields. PATCH applies only fields named in the required update_mask query parameter.jsRenderingjs_rendering in settingsRENDER_ALL and DISABLED values stay the same.snapshot_id query parameteraudit_report_id path parametersnapshot_id, numeric issueIdissue_type path parameterINTERNAL_LINK_BROKEN instead of issue ID 8. v4 returns the latest successful audit and doesn’t accept a snapshot ID.page, limit, sort, filteroffset, limit, order_by, direction, filteroffset instead of page. Sorting uses separate field and direction parameters. Filters use expressions such as source_url CONTAINS "example.com".urlfilterurl CONTAINS "example.com/blog".Jump to Response parameter differencesResponse parameter differences
The tables list changed response parameters only. Refer to the linked method pages for complete response schemas.
Jump to BacklinksBacklinks
v3 endpoint
v4 endpoint
v3 parameter
v4 parameter
Change
CSV (
format=csv, except Matrix)meta) from results (data). CSV uses the v4 column names and values described below. Matrix supports JSON only.ascore, total, and *_num fieldsscore, backlinks_count, and *_count fieldsscore replaces ascore, and backlinks_count replaces total. Count names change from *_num to *_count, such as domains_count and ip_class_c_count.*_num, first_seen, last_seen, ip, and legacy Boolean field names*_count, *_at, ip_address, and is_* Boolean fieldsbacklinks_num becomes backlinks_count, first_seen becomes first_seen_at, ip becomes ip_address, and nofollow becomes is_nofollow. On Backlinks and Pages, external_num and internal_num become external_links_count and internal_links_count. Referring Domains doesn’t return domain_trust_score.zone or country, domains_num, backlinks_numdomain, country, backlinks_countv4 returns individual referring domains rather than TLD or country totals. Totals require grouping all result pages by TLD or country. Country values change from country names to two-letter ISO 3166-1 alpha-2 codes.neighbour, score, domains_num, backlinks_numdomain, similarity, common_refdomainsdomain replaces neighbour. v4 returns similarity and common_refdomains but doesn’t return the v3 score, domains_num, or backlinks_num metrics. similarity changes from a percentage to a ratio from 0 to 1.matches_num, and domain_ascore or domain_scorebacklinks_counts, matches_count, and domain_scorebacklinks_counts replaces the separate target columns with an array ordered like urls. matches_count replaces matches_num. The domain authority score field is named domain_score.target, target_type, ascore, and *_num fieldsurl, score, and *_count fieldsurl replaces target, score replaces ascore, and count names use *_count. v4 doesn’t return the v3 IP, nofollow, text, image, form, or frame counts.ascore, domains_numdomain_score, domains_countdomain_score replaces ascore. domains_count replaces domains_num.date, backlinks_num, domains_nummonth_date, backlinks_count, domains_countmonth_date replaces date. backlinks_count and domains_count replace backlinks_num and domains_num. v4 also returns follows_count.Jump to Keyword reportsKeyword reports
v3 endpoint
v4 endpoint
v3 parameter
v4 parameter
Change
meta and data JSON response (format=json); CSV rows (format=csv)meta, and metrics in data. CSV contains the metric columns. Both formats use the v4 names, units, and values described below.Nq, Cp, Co, Nr, In, Kdsearch_volume, cpc, competitive_density, number_of_results, intents, keyword_difficultyv3 column abbreviations are replaced by the v4 field names shown here. In JSON, these fields are in data.Tdtrendstrends replaces Td. In JSON, it’s an array in data. Values change from a 0–1 scale to integers from 0 to 100.Co value from 0 to 1; Cp in USD; In values from 0 to 3competitive_density from 0 to 100; cpc in USD cents; intents string valuesDt, Db, Ph response columnsmonth, country, keywordmonth, country, and keyword are in meta, separate from the metrics in data.Ph response columnkeywordkeyword is in meta. It isn’t a metric field in data.Kdkeyword_difficultykeyword_difficulty replaces Kd. In JSON, it’s in data.CSV (
format=csv)data is an array of keyword objects. Each contains keyword and a metrics object. meta contains the seed keyword, country and pagination details.Nq, Cp, Co, Nr, In, Kd, Tdsearch_volume, cpc, competitive_density, number_of_results, intents, keyword_difficulty, trendsmetrics object.Fk numeric SERP feature codesserp_features string valuesFEATURED_SNIPPET instead of numeric codes.Rrrelevancerelevance is an integer from 0 to 100, returned alongside keyword and metrics in each JSON result.Jump to Domain AnalyticsDomain Analytics
v3 endpoint
v4 endpoint
v3 parameter
v4 parameter
Change
data and metadata. meta identifies the requested target, database and month, and includes pagination where supported. These v4 references document JSON output.Rk, Or, Ot, Oc, Ad, At, Acrank, organic_positions, organic_traffic, organic_traffic_cost, adwords_positions, adwords_traffic, adwords_traffic_costmetrics. rank and month are outside that object.Ph, Po, Nq, Kd, Nrkeyword, position, volume, keyword_difficulty, resultstarget and competitor objects. keyword_difficulty is new for paid keywords.Cp as a USD amountcpc object with value and currencyvalue and currency. value is in USD, same as in v3.Tr, Tc, Tgtraffic_percent, traffic_cost_percent, traffictraffic is a count, not a percentage.Co from 0 to 1competition_density from 0 to 100In numeric codes, Td values from 0 to 1intents strings, trends values from 0 to 100COMMERCIAL. Monthly search-interest values use a 0–100 scale.Ur, Pc, Tg, Trurl or subdomain, organic_positions, organic_traffic, traffic_percent (pages) or organic_traffic_percent (subdomains)Dn, Np, Cr (Cr from 0 to 1)domain, common_keywords, competition_density (competition_density from 0 to 100)Tt, Ds, Vu, Ur, Pctitle, description, url_visible, url, positionspositions counts the keyword positions where the ad appeared.Cv, Dt, Po, Tt, Dscoverage_12m, best_positions, title, descriptionbest_positions list containing month and position. Monthly keyword responses provide each month’s ad title and description.Dt, Po, Dn, Tt, Ds, Ur, Vumonth, position, domain, title, description, url, url_visiblemeta. Each advertiser has its best position and associated ad copy for that month.Pr, Tt, Sn, Urprice, title, shop_name, urlprice is an object containing value and currency. Product titles, shop names and landing URLs use named fields.P0 through P4target, competitorposition and url. Its ranking object is omitted when that side doesn’t rank for the keyword.Jump to Project managementProject management
v3 endpoint
v4 endpoint
v3 parameter
v4 parameter
Change
datadata, with request metadata in meta. data is an array for List Projects and an object for single-project endpoints.urldomaindomain replaces url.permissionpermissionsv3 permission-code list becomes a permissions object with Boolean fields: read, edit, delete, share, and downgraded.toolnametools, name replaces tool as the tool identifier.Jump to Position TrackingPosition Tracking
v3 endpoint
v4 endpoint
v3 parameter
v4 parameter
Change
data plus endpoint-specific root fields, such as total, limit, offset, and statemeta and datav3 response structure varies by endpoint. v4 groups status, request, campaign, and pagination details in meta, and results in data.campaign_idcampaign_id, added_keywordscampaign_id moves from result to data, which also contains added_keywords. The project ID is returned as project_id in meta.id, url, type, isGatheringcampaign_id, tracking_url, tracking_url_type, weekly_notification, created_at, updated_atcampaigns, campaign_id, tracking_url, and tracking_url_type replace id, url, and type. v4 adds weekly_notification, created_at, and updated_at. isGathering isn’t returned.competitors array of domain stringsid, competitor_url, competitor_url_typecompetitors array changes from domain strings to objects containing id, competitor_url, and competitor_url_type.PUT /management/v1/projects/\{campaignID\}/keywordsDELETE /management/v1/projects/\{campaignID\}/keywordsPUT /management/v1/projects/\{campaignID\}/tagsDELETE /management/v1/projects/\{campaignID\}/tagsPUT /management/v1/projects/\{campaignID\}/competitorsDELETE /management/v1/projects/\{campaignID\}/competitorsPOST /apis/v4/position-tracking/v1/seo/campaigns/:campaign_id/keywordsDELETE /apis/v4/position-tracking/v1/seo/campaigns/:campaign_id/keywordsPOST /apis/v4/position-tracking/v1/seo/campaigns/:campaign_id/keywords/tagsDELETE /apis/v4/position-tracking/v1/seo/campaigns/:campaign_id/keywords/tagsPOST /apis/v4/position-tracking/v1/seo/campaigns/:campaign_id/competitorsDELETE /apis/v4/position-tracking/v1/seo/campaigns/:campaign_id/competitorsadded_keywords when adding keywords. Empty data object for the other operationsadded_keywords in data. The other listed operations return an empty data object rather than updated campaign details.Dt in the YYYYMMDD format; last_crawldate in the YYYY-MM-DD formatdate fields in the tracking_points array and use YYYY-MM-DD. v4 doesn’t return last_crawl.visibility, differenceVisibility, top3, top10, other ranking counters, and datacounter for ranking counters; tracking_points for visibility and traffic trendstracking_points. The data array, which holds the number of keywords at each position from 1 to 100, has no v4 equivalent. v4 provides aggregated Top N counters only.Ph, Kb, Tg, Cp, Nq, Dt, Vi, Sov, Tr, Tckeyword, created_at, tags, cpc, volume, tracking_points, diffkeyword, cpc, and volume. Values for each tracking date are grouped in tracking_points.Ur, Dt, Mc, Av, Sq, Cl, Sov, Tr, Tccompetitor_url, tracking_points, diffcompetitor_url, with values for each tracking date in tracking_points and changes in diff.Dt, Vi, Vr, Av, Sov, Tr, Tcdate, absolute_visibility, visibility, average_position, share_of_voice, traffic, traffic_costvisibility, average_position, and share_of_voice. The date field in tracking_points uses YYYY-MM-DD.Ur, Tp, Mc, Av, Tr, Tc, Rq, Kwurl, status, metrics, diff, keywordsmetrics are for comparison_date. diff contains changes between base_date and comparison_date. keywords contains per-date keyword positions. Tc (page traffic cost) isn’t returned by this endpoint.Cp, Nqcpc, volumecpc remains in USD. volume is average monthly search volume. Both metrics are available for Google campaigns only.Jump to Site AuditSite Audit
v3 endpoint
v4 endpoint
v3 parameter
v4 parameter
Change
GET /apis/v4/site-audit/v1/campaigns/:campaign_id/overviewGET /apis/v4/site-audit/v1/campaigns/:campaign_id/settingsGET /apis/v4/site-audit/v1/campaigns/:campaign_id/progressGET /apis/v4/site-audit/v1/campaigns/:campaign_id/audit-reports/:audit_report_id/overviewGET /apis/v4/site-audit/v1/campaigns/:campaign_id/linkingdatalast_success_audit_report_id. Get Campaign Settings returns settings. Get Audit Progress returns live counters. Get Audit Report returns completed audit results. Get Linking Report returns the crawl depth distribution in depths.id, url, last_audit, last_failed_audit, next_auditcampaign_id, domain, last_audit_at, last_failed_audit_at, next_audit_atv4 dates are ISO 8601 UTC strings.snapshot_idaudit_report_idv4 returns 202 Accepted before the audit finishes. data contains the ID of the report being generated (audit_report_id).snapshot_id, finish_dateaudit_report_id, finish_dateaudit_report_id replaces snapshot_id. finish_date changes from a Unix timestamp in milliseconds to an ISO 8601 UTC string. Lists are in data, with pagination in meta.quality, numeric issue idtotal_score, issue_typetotal_score replaces quality and keeps value and delta. Issues in errors, warnings, and notices use string issue_type values instead of numeric IDs.issue_id, page, total, datadata, metadata. Pagination and total_count move to meta, which also includes audit_report_id. v4 selects the issue through the issue_type path parameter.data, totaldata, total_countdata. The result count is total_count in meta.page_id, url, title, errors, warnings, noticespage, severity, issue_type, issuespage, inside data. Get Audited Page Issues returns issue groups in data, identified by severity and issue_type.discovered, infodiscovered, infodiscovered changes from a Unix timestamp in milliseconds to an ISO 8601 UTC string. The structure inside info depends on the issue. For example, http_code_info contains the HTTP status code in a code field.Last updated: November 13, 2026