See Plans and Prices Https://www.semrush.com/prices/

Semrush Pricing Calculator: Optimize Your Marketing Budget body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; line-height: 1.6; color: #333; background-color: #f8f9fa; margin: 0; padding: 0; } .container { max-width: 1000px; margin: 20px auto; padding: 20px; background-color: #fff; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); border-radius: 8px; } .header { background-color: #004a99; color: white; padding: 20px; text-align: center; border-radius: 8px 8px 0 0; margin: -20px -20px 20px -20px; } .header h1 { margin: 0; font-size: 2.2em; font-weight: 600; } .calculator-section { margin-bottom: 40px; padding: 25px; border: 1px solid #e0e0e0; border-radius: 8px; background-color: #fdfdfd; } .calculator-section h2 { text-align: center; margin-top: 0; margin-bottom: 25px; color: #004a99; font-size: 1.8em; } .input-group { margin-bottom: 20px; text-align: left; } .input-group label { display: block; margin-bottom: 8px; font-weight: 500; color: #555; } .input-group input[type="number"], .input-group select { width: calc(100% – 22px); padding: 10px; border: 1px solid #ccc; border-radius: 4px; font-size: 1em; box-sizing: border-box; } .input-group select { width: 100%; } .input-group .helper-text { font-size: 0.85em; color: #777; margin-top: 5px; display: block; } .input-group .error-message { color: #dc3545; font-size: 0.85em; margin-top: 5px; display: block; min-height: 1.2em; } .button-group { text-align: center; margin-top: 30px; } .button-group button, .button-group input[type="button"] { background-color: #004a99; color: white; border: none; padding: 12px 25px; border-radius: 5px; font-size: 1em; cursor: pointer; margin: 0 10px; transition: background-color 0.3s ease; font-weight: 500; } .button-group button:hover, .button-group input[type="button"]:hover { background-color: #003366; } .button-group button.reset-btn { background-color: #6c757d; } .button-group button.reset-btn:hover { background-color: #5a6268; } .results-section { margin-top: 30px; padding: 25px; border: 1px solid #e0e0e0; border-radius: 8px; background-color: #fdfdfd; text-align: center; } .results-section h2 { margin-top: 0; color: #004a99; font-size: 1.8em; } #primary-result { font-size: 2.5em; font-weight: bold; color: #28a745; background-color: #e9f7ef; padding: 15px 20px; border-radius: 6px; display: inline-block; margin-bottom: 20px; min-width: 200px; } .intermediate-results { display: flex; justify-content: space-around; flex-wrap: wrap; margin-bottom: 25px; padding: 15px; border-top: 1px solid #eee; border-bottom: 1px solid #eee; } .intermediate-result-item { text-align: center; padding: 10px; flex: 1; min-width: 150px; } .intermediate-result-item strong { display: block; font-size: 1.3em; color: #004a99; margin-bottom: 5px; } .intermediate-result-item span { font-size: 0.9em; color: #555; } .formula-explanation { font-size: 0.9em; color: #666; margin-top: 15px; } #copy-results { background-color: #17a2b8; margin-top: 20px; } #copy-results:hover { background-color: #138496; } .chart-container, .table-container { margin-top: 30px; padding: 25px; border: 1px solid #e0e0e0; border-radius: 8px; background-color: #fdfdfd; } .chart-container h2, .table-container h2 { margin-top: 0; color: #004a99; font-size: 1.8em; margin-bottom: 20px; } canvas { max-width: 100%; height: auto; display: block; margin: 10px auto; } table { width: 100%; border-collapse: collapse; margin-top: 20px; } th, td { border: 1px solid #ddd; padding: 10px; text-align: center; } th { background-color: #004a99; color: white; } caption { font-size: 1.1em; font-weight: bold; color: #333; margin-bottom: 10px; caption-side: top; text-align: left; } .article-section { margin-top: 40px; padding: 20px; background-color: #fff; border-radius: 8px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); } .article-section h2 { color: #004a99; font-size: 2em; margin-bottom: 1.5em; border-bottom: 2px solid #004a99; padding-bottom: 0.5em; } .article-section h3 { color: #004a99; font-size: 1.5em; margin-top: 1.5em; margin-bottom: 0.8em; } .article-section p, .article-section ul, .article-section ol { margin-bottom: 1.5em; font-size: 1.1em; } .article-section ul li, .article-section ol li { margin-bottom: 0.8em; } .faq-list { list-style: none; padding: 0; } .faq-item { margin-bottom: 1.5em; border-bottom: 1px dashed #eee; padding-bottom: 1em; } .faq-item:last-child { border-bottom: none; } .faq-item strong { display: block; color: #004a99; margin-bottom: 0.5em; font-size: 1.1em; } .internal-links { margin-top: 30px; padding: 20px; background-color: #eef7ff; border-radius: 8px; border: 1px solid #cce5ff; } .internal-links h3 { color: #004a99; font-size: 1.5em; margin-top: 0; margin-bottom: 1em; } .internal-links ul { list-style: none; padding: 0; margin: 0; } .internal-links li { margin-bottom: 0.8em; } .internal-links a { color: #004a99; text-decoration: none; font-weight: 500; } .internal-links a:hover { text-decoration: underline; } .internal-links p { font-size: 0.9em; color: #555; margin-top: 0.3em; margin-bottom: 0; } .highlight { background-color: #fff3cd; padding: 2px 4px; border-radius: 3px; } .text-center { text-align: center; } .error { border-color: #dc3545 !important; }

Semrush Pricing Calculator

Estimate your monthly Semrush subscription cost based on your chosen plan and features.

Calculate Your Semrush Investment

Pro Guru Business Select the Semrush plan that best suits your needs.
Semrush plans have varying user limits. Additional users may incur extra costs on higher tiers.
Projects are spaces for managing your campaigns and data.
Limited Extended Higher plans offer more extensive historical data for deeper analysis.
No Yes (Requires Business Plan or add-on) Required for custom integrations and data pulling.
No Yes (Typically for Business Plan) Personalized support and strategic guidance.

Your Estimated Semrush Cost

$0.00
$0.00 Base Plan Cost
$0.00 Add-on Costs
$0 Project Units

Your total Semrush cost is calculated based on your selected plan's base price, plus any additional costs for extra users, projects, and specific features like API access or a dedicated account manager, depending on the plan tier.

Semrush Plan Features Overview

Feature Pro Guru Business
Base Monthly Price (approx.) $129.95 $249.95 $499.95
Users Included 1 3 10
Projects Included 5 15 40
Historical Data Access Limited Extended Extended
API Access No No Yes
Dedicated Account Manager No No Yes
White Label Reports No Yes Yes
CPC Data Up to 10K Up to 50K Up to 100K

Note: Prices and features are indicative and subject to change by Semrush. Refer to the official Semrush pricing page for the most current details.

Monthly Cost Projection by Plan

This chart visualizes the base monthly cost of each Semrush plan. Additional features and users can increase the total expenditure beyond these figures.

{primary_keyword}

Understanding {primary_keyword} is crucial for any digital marketing professional or business looking to leverage robust SEO and marketing tools. Semrush is a comprehensive suite of tools designed to help with search engine optimization, content marketing, competitor research, PPC, and social media marketing. The term {primary_keyword} refers to the cost associated with subscribing to Semrush's various plans and add-on features. These costs can vary significantly based on the level of access, features, number of users, and specific modules a user requires. Effectively managing your Semrush budget ensures you can maximize its powerful capabilities without overspending.

Who Should Use Semrush Pricing Insights?

Essentially, anyone considering or currently using Semrush should pay close attention to its pricing structure. This includes:

  • Small Business Owners: Trying to balance powerful marketing tools with tight budgets.
  • Marketing Agencies: Managing subscriptions for multiple clients and needing to allocate costs effectively.
  • In-house Marketing Teams: Ensuring their department's budget is optimized for the tools they need to succeed.
  • Freelancers: Selecting the right plan for their service offerings and client needs.
  • SEO Professionals: Evaluating different tiers to find the best balance of features for in-depth analysis and reporting.

Common Misconceptions About Semrush Pricing

Several common misunderstandings can lead to unexpected costs or suboptimal plan choices:

  • "All features are included in the basic plan": This is rarely the case. Semrush offers tiered plans, with advanced features often reserved for higher tiers or available as paid add-ons.
  • "Pricing is fixed and never changes": While Semrush provides clear pricing, they do offer discounts for annual subscriptions, and occasional promotions or changes to plan structures can occur.
  • "More expensive always means better for my needs": The most expensive plan isn't always the best fit. Understanding your specific requirements is key to choosing the most cost-effective plan.
  • "Add-ons are too expensive": Sometimes, an add-on for a specific feature might be more cost-effective than upgrading to a much higher tier plan if you only need that one feature.

Semrush Pricing Formula and Mathematical Explanation

The calculation of your total Semrush subscription cost isn't a single rigid formula like a loan calculation, but rather a sum of components based on your chosen plan and specific needs. Here's a breakdown:

Total Semrush Cost = Base Plan Cost + (Additional Users Cost * Number of Extra Users) + (Additional Projects Cost * Number of Extra Projects) + Add-on Feature Costs

Let's elaborate on the variables:

  • Base Plan Cost: This is the fundamental price of the Semrush plan you select (e.g., Pro, Guru, Business). This cost is fixed per plan per month (or annual equivalent).
  • Number of Users: Semrush plans come with a set number of included users. If you need more users than the base plan provides, you'll incur an additional cost per extra user, especially on higher tiers like Business.
  • Number of Projects: Similarly, each plan includes a certain number of projects. Exceeding this limit may require paying for additional project slots or upgrading to a plan with more included projects.
  • Add-on Feature Costs: These are costs for specific functionalities not included in your base plan, such as advanced API access (if not part of the plan), specific market explorers, or specialized data sets. These are often modular.

Variable Explanation Table

Semrush Pricing Variables
Variable Meaning Unit Typical Range/Notes
Base Plan Cost Monthly subscription fee for the chosen tier (Pro, Guru, Business) USD ($) $129.95 (Pro) – $499.95 (Business)
Users Included Number of user seats provided with the plan Count 1 (Pro), 3 (Guru), 10 (Business)
Projects Included Number of distinct projects you can manage Count 5 (Pro), 15 (Guru), 40 (Business)
Extra Users Cost Cost per user beyond the plan's included limit USD ($) per user Varies, often higher on premium plans or via specific add-ons
Extra Projects Cost Cost per project beyond the plan's included limit USD ($) per project Varies, often requires add-ons or higher tiers
Historical Data Access Level of access to past data for trend analysis Category Limited / Extended
API Access Availability of API for custom data integration Boolean / Category No / Yes (Business Plan or Add-on)
Dedicated Account Manager Availability of a personal point of contact for support and strategy Boolean No / Yes (Business Plan)

Practical Examples (Real-World Use Cases)

Example 1: Small Agency Starting Out

Scenario: A small digital marketing agency with 2 SEO specialists needs a tool for client work. They require robust keyword research, rank tracking for multiple clients, and site audits. They anticipate managing around 8 projects initially.

Inputs:

  • Plan: Guru
  • Number of Users: 2 (1 included + 1 extra)
  • Number of Projects: 8 (5 included + 3 extra)
  • Historical Data Access: Extended (Included in Guru)
  • API Access: No
  • Dedicated Account Manager: No

Calculation:

  • Base Plan Cost (Guru): $249.95
  • Included Users: 3 (Need 2, so no extra user cost)
  • Included Projects: 15 (Need 8, so no extra project cost)
  • Add-on Costs: $0

Estimated Monthly Cost: $249.95

Interpretation: The Guru plan at its base price is sufficient for this agency's immediate needs, as they fall within the included user and project limits. This allows them to access extended historical data and crucial features without additional costs.

Example 2: Established E-commerce Business

Scenario: An e-commerce company with a dedicated marketing team of 5 people. They need comprehensive competitor analysis, PPC tools, content marketing features, and want to integrate Semrush data into their custom reporting dashboard via API. They manage a large number of campaigns, requiring about 25 projects.

Inputs:

  • Plan: Business
  • Number of Users: 5 (1 included + 4 extra)
  • Number of Projects: 25 (15 included + 10 extra)
  • Historical Data Access: Extended (Included in Business)
  • API Access: Yes
  • Dedicated Account Manager: Yes (Included in Business)

Calculation (Illustrative – actual add-on costs vary):

  • Base Plan Cost (Business): $499.95
  • Included Users: 10 (Need 5, so no extra user cost)
  • Included Projects: 40 (Need 25, so no extra project cost)
  • API Access: Included in Business
  • Dedicated Account Manager: Included in Business
  • Add-on Costs: $0 (assuming all needs met by plan, though extra projects might incur fees if limit is hit)

Estimated Monthly Cost: $499.95 (base price)

Interpretation: The Business plan is ideal here. It covers the team size, project volume, and essential features like API access and account management. The company benefits from the scale of the Business plan, ensuring all their advanced needs are met within a single subscription framework.

How to Use This Semrush Pricing Calculator

This calculator is designed to provide a quick and accurate estimate of your potential Semrush subscription costs. Follow these simple steps:

  1. Select Your Plan: Choose the Semrush plan (Pro, Guru, or Business) that you believe aligns best with your business requirements from the 'Choose Your Plan' dropdown.
  2. Input Number of Users: Enter the total number of team members who will need access to Semrush. The calculator will indicate if you exceed the included user limit for your chosen plan.
  3. Input Number of Projects: Specify the number of distinct projects (e.g., client campaigns, website analyses) you intend to manage within Semrush. This helps determine if you'll need additional project slots.
  4. Specify Feature Needs: Use the dropdowns for 'Historical Data Access', 'API Access', and 'Dedicated Account Manager' to reflect your requirements. Note that these features are often tied to specific plan tiers.
  5. Review Results: The calculator will automatically update to display:
    • Primary Result: Your estimated total monthly cost.
    • Intermediate Values: Breakdown showing the base plan cost, estimated add-on costs (if applicable), and the number of project units you are utilizing.
  6. Interpret Your Estimate: Compare the estimated cost against your marketing budget. The breakdown helps you understand where the costs are coming from.
  7. Use the Table and Chart: Refer to the 'Semrush Plan Features Overview' table to compare plan specifics and the chart to visualize base costs across tiers.
  8. Reset or Copy: Use the 'Reset' button to start over with default values, or 'Copy Results' to save your calculated estimate.

Decision-Making Guidance: Use the estimated cost as a key factor in your decision-making process. If the estimate exceeds your budget, consider if a lower-tier plan with fewer features or a slightly adjusted user/project count might suffice. Conversely, if your needs are complex, the estimate can justify investing in a higher-tier plan.

Key Factors That Affect Semrush Pricing Results

Several crucial factors influence the final cost you'll incur for using Semrush. Understanding these can help you optimize your subscription and budget:

  1. Chosen Plan Tier: This is the most significant factor. Pro, Guru, and Business plans have vastly different base prices and included features. A Business plan offers more, but at a substantially higher cost than Pro.
  2. Number of Users: While lower tiers like Pro include only one user, Guru includes three, and Business includes ten. Exceeding these limits often necessitates purchasing additional user seats, which increases the overall monthly expenditure.
  3. Number of Projects: Each plan has a limit on the number of projects you can create. If your workflow involves managing numerous distinct campaigns or clients, you might hit this limit and need to pay for extra project slots or upgrade.
  4. Need for Advanced Features (API, Account Manager): Features like API access or a dedicated account manager are typically reserved for the higher-tier Business plan or available as costly add-ons. If your strategy relies heavily on these, your costs will increase.
  5. Historical Data Depth: While all plans offer some form of historical data, higher tiers provide 'Extended' access, allowing for longer-term trend analysis. If deep historical insights are critical, you'll likely need a Guru or Business plan.
  6. Add-on Modules/Tools: Semrush also offers specialized add-on tools (e.g., Semrush .Trends, specific data APIs) that are not included in the base plans. Acquiring these will directly add to your monthly bill.
  7. Annual vs. Monthly Billing: Semrush typically offers a discount (often around 15-20%) for committing to an annual subscription instead of paying month-to-month. This significantly impacts the effective monthly cost over the year.

Frequently Asked Questions (FAQ)

  • Q1: What is the difference between Semrush Pro, Guru, and Business plans?

    A: The primary differences lie in the number of included users, projects, limits on data tracking (like keywords and CPC data), access to historical data, and availability of advanced features like API access and a dedicated account manager. Pro is for individuals or small teams, Guru is for growing businesses needing more features, and Business is for larger teams or agencies requiring comprehensive tools and support.

  • Q2: Can I upgrade or downgrade my Semrush plan?

    A: Yes, Semrush allows you to upgrade or downgrade your plan. Upgrades typically take effect immediately, while downgrades might apply at the end of your current billing cycle. Contact Semrush support for specific details.

  • Q3: Are there discounts available for Semrush subscriptions?

    A: Yes, Semrush offers a significant discount for users who choose to pay annually instead of monthly. They may also offer special pricing for non-profits or educational institutions.

  • Q4: What happens if I need more users or projects than my plan includes?

    A: For additional users, you generally need to upgrade to a higher plan or purchase user add-ons, especially on the Business tier. For additional projects, you might need to purchase project slots or upgrade your plan depending on the Semrush policy at the time.

  • Q5: Is API access included in all Semrush plans?

    A: No, API access is typically included only in the Business plan. For Pro or Guru users who require API integration, it usually needs to be purchased as a separate add-on, which can significantly increase the cost.

  • Q6: How does Semrush define a "project"?

    A: A project in Semrush is essentially a workspace for tracking and analyzing a specific website or a particular aspect of your online presence. This could be for your own website, a client's site, or a specific campaign you're running.

  • Q7: What is the benefit of "Extended" historical data access?

    A: Extended historical data allows you to analyze trends over a longer period, providing deeper insights into keyword performance, competitor strategies, and market shifts. Limited access might only provide data for a few months or years.

  • Q8: Can I trial Semrush before committing to a plan?

    A: Semrush occasionally offers free trials or limited-time access to certain features. It's best to check their website directly for current trial offers. Longer-term needs are usually best assessed using the calculator and comparing plan features.

  • Q9: How often do Semrush prices change?

    A: Semrush prices are relatively stable but can be updated annually or in response to market changes. The calculator uses current approximate pricing, but always verify on the official Semrush pricing page for the most up-to-date information.

© 2023 Your Website Name. All rights reserved. Please note that Semrush pricing and features are subject to change. Always refer to the official Semrush website for the most current details.

// Base pricing, limits, and feature availability from Semrush pricing page var planDetails = { "pro": { baseCost: 129.95, usersIncluded: 1, projectsIncluded: 5, historicalData: "limited", apiAccess: false, accountManager: false, featureSet: "Basic SEO & Content" }, "guru": { baseCost: 249.95, usersIncluded: 3, projectsIncluded: 15, historicalData: "extended", apiAccess: false, accountManager: false, featureSet: "Advanced SEO & Content, Market Analysis" }, "business": { baseCost: 499.95, usersIncluded: 10, projectsIncluded: 40, historicalData: "extended", apiAccess: true, accountManager: true, featureSet: "Comprehensive SEO, Content, PPC & Market Share" } }; // Add-on costs (illustrative and may vary) var addOnCosts = { extraUser: 50, // Approximate cost per extra user beyond plan limits extraProject: 10, // Approximate cost per extra project beyond plan limits apiAccess: 100, // If API is not included in plan accountManager: 200 // If AM is not included in plan }; var ctx; // Canvas context for chart var pricingChart; // Chart instance // Function to initialize the chart function initializeChart() { if (ctx) return; // Already initialized var canvas = document.getElementById('pricingChart'); if (!canvas) return; ctx = canvas.getContext('2d'); var chartData = { labels: ['Pro', 'Guru', 'Business'], datasets: [{ label: 'Base Monthly Cost ($)', data: [ planDetails.pro.baseCost, planDetails.guru.baseCost, planDetails.business.baseCost ], backgroundColor: 'rgba(0, 74, 153, 0.6)', // Semrush Blue borderColor: 'rgba(0, 74, 153, 1)', borderWidth: 1 }] }; pricingChart = new Chart(ctx, { type: 'bar', data: chartData, options: { responsive: true, maintainAspectRatio: false, scales: { y: { beginAtZero: true, title: { display: true, text: 'Monthly Cost ($)' } } }, plugins: { legend: { display: false // Hide legend as there's only one series }, title: { display: true, text: 'Base Monthly Cost Comparison by Semrush Plan' } } } }); } // Function to update the chart data function updateChart() { if (!pricingChart) { initializeChart(); return; } pricingChart.data.datasets[0].data = [ planDetails.pro.baseCost, planDetails.guru.baseCost, planDetails.business.baseCost ]; pricingChart.update(); } // Function to update the features table dynamically function updateFeaturesTable() { var tableBody = document.getElementById('featuresTableBody'); if (!tableBody) return; var rows = tableBody.getElementsByTagName('tr'); var planSelect = document.getElementById('planSelect'); var selectedPlanKey = planSelect.value; var selectedPlan = planDetails[selectedPlanKey]; var inputs = { users: parseInt(document.getElementById('users').value), projects: parseInt(document.getElementById('projects').value), historicalData: document.getElementById('historicalData').value, apiAccess: document.getElementById('apiAccess').value === 'yes', accountManager: document.getElementById('accountManager').value === 'yes' }; // Update the base price row rows[0].cells[1].textContent = '$' + planDetails.pro.baseCost.toFixed(2); rows[0].cells[2].textContent = '$' + planDetails.guru.baseCost.toFixed(2); rows[0].cells[3].textContent = '$' + planDetails.business.baseCost.toFixed(2); // Update included users row rows[1].cells[1].textContent = planDetails.pro.usersIncluded; rows[1].cells[2].textContent = planDetails.guru.usersIncluded; rows[1].cells[3].textContent = planDetails.business.usersIncluded; // Update included projects row rows[2].cells[1].textContent = planDetails.pro.projectsIncluded; rows[2].cells[2].textContent = planDetails.guru.projectsIncluded; rows[2].cells[3].textContent = planDetails.business.projectsIncluded; // Update Historical Data row rows[3].cells[1].textContent = planDetails.pro.historicalData === 'limited' ? 'Limited' : 'Extended'; rows[3].cells[2].textContent = planDetails.guru.historicalData === 'limited' ? 'Limited' : 'Extended'; rows[3].cells[3].textContent = planDetails.business.historicalData === 'limited' ? 'Limited' : 'Extended'; // Update API Access row rows[4].cells[1].textContent = planDetails.pro.apiAccess ? 'Yes' : 'No'; rows[4].cells[2].textContent = planDetails.guru.apiAccess ? 'Yes' : 'No'; rows[4].cells[3].textContent = planDetails.business.apiAccess ? 'Yes' : 'No'; // Update Account Manager row rows[5].cells[1].textContent = planDetails.pro.accountManager ? 'Yes' : 'No'; rows[5].cells[2].textContent = planDetails.guru.accountManager ? 'Yes' : 'No'; rows[5].cells[3].textContent = planDetails.business.accountManager ? 'Yes' : 'No'; // Highlight selected plan column (simplified, just changes border) for(var i = 1; i < rows[0].cells.length; i++) { rows[0].cells[i].style.borderLeft = (i == (Object.keys(planDetails).indexOf(selectedPlanKey) + 1)) ? "2px solid #28a745" : "1px solid #ddd"; rows[i].cells[i].style.backgroundColor = (i == (Object.keys(planDetails).indexOf(selectedPlanKey) + 1)) ? "#e9f7ef" : ""; } } function validateInput(id, min, max, errorElementId, helperTextElementId, value) { var inputElement = document.getElementById(id); var errorElement = document.getElementById(errorElementId); var helperTextElement = document.getElementById(helperTextElementId); var isValid = true; if (value === '' || isNaN(value)) { errorElement.textContent = "Please enter a valid number."; inputElement.classList.add('error'); isValid = false; } else { var numValue = parseFloat(value); if (numValue max) { errorElement.textContent = "Value cannot exceed " + max + "."; inputElement.classList.add('error'); isValid = false; } else { errorElement.textContent = ""; inputElement.classList.remove('error'); } } // Restore helper text if no error if (isValid && errorElement.textContent === "") { if (helperTextElement) { helperTextElement.style.display = 'block'; } } else if (!isValid && errorElement.textContent !== "") { if (helperTextElement) { helperTextElement.style.display = 'none'; } } return isValid; } function updateCalculator() { var planSelect = document.getElementById('planSelect'); var usersInput = document.getElementById('users'); var projectsInput = document.getElementById('projects'); var historicalDataSelect = document.getElementById('historicalData'); var apiAccessSelect = document.getElementById('apiAccess'); var accountManagerSelect = document.getElementById('accountManager'); var selectedPlanKey = planSelect.value; var selectedPlan = planDetails[selectedPlanKey]; var users = parseInt(usersInput.value); var projects = parseInt(projectsInput.value); var historicalData = historicalDataSelect.value; var apiAccess = apiAccessSelect.value === 'yes'; var accountManager = accountManagerSelect.value === 'yes'; // Validation for number inputs var usersValid = validateInput('users', 1, 10, 'usersError', 'users', usersInput.value); var projectsValid = validateInput('projects', 0, 50, 'projectsError', 'projects', projectsInput.value); if (!usersValid || !projectsValid) { // If validation fails, reset results to default or error state document.getElementById('primary-result').textContent = '$0.00'; document.getElementById('basePlanCost').textContent = '$0.00'; document.getElementById('addOnsCost').textContent = '$0.00'; document.getElementById('totalProjects').textContent = '0'; return; } var baseCost = selectedPlan.baseCost; var addOnsCost = 0; var totalProjectsUsed = projects; // Calculate extra user cost var extraUsers = 0; if (users > selectedPlan.usersIncluded) { extraUsers = users – selectedPlan.usersIncluded; addOnsCost += extraUsers * addOnCosts.extraUser; } // Calculate extra project cost if (projects > selectedPlan.projectsIncluded) { var extraProjects = projects – selectedPlan.projectsIncluded; addOnsCost += extraProjects * addOnCosts.extraProject; } // Add costs for features not included in the plan if (apiAccess && !selectedPlan.apiAccess) { addOnsCost += addOnCosts.apiAccess; } if (accountManager && !selectedPlan.accountManager) { addOnsCost += addOnCosts.accountManager; } // Ensure historical data selection aligns with plan if necessary (though calculator doesn't enforce it strictly here) if (historicalData === 'extended' && selectedPlan.historicalData === 'limited') { // Potentially add cost if extended is needed but not included, or warn user // For simplicity, this calculator assumes user selects plan matching feature needs. // A more complex version could add a cost here. } var totalCost = baseCost + addOnsCost; document.getElementById('primary-result').textContent = '$' + totalCost.toFixed(2); document.getElementById('basePlanCost').textContent = '$' + baseCost.toFixed(2); document.getElementById('addOnsCost').textContent = '$' + addOnsCost.toFixed(2); document.getElementById('totalProjects').textContent = totalProjectsUsed; updateFeaturesTable(); // Update table to reflect selected plan highlighting updateChart(); // Update chart if needed (though base costs don't change dynamically here) } function resetCalculator() { document.getElementById('planSelect').value = 'pro'; document.getElementById('users').value = '1'; document.getElementById('projects').value = '5'; document.getElementById('historicalData').value = 'limited'; document.getElementById('apiAccess').value = 'no'; document.getElementById('accountManager').value = 'no'; // Clear errors document.getElementById('usersError').textContent = "; document.getElementById('users').classList.remove('error'); document.getElementById('projectsError').textContent = "; document.getElementById('projects').classList.remove('error'); // Restore helper texts var usersHelper = document.querySelector('#users + .helper-text'); if(usersHelper) usersHelper.style.display = 'block'; var projectsHelper = document.querySelector('#projects + .helper-text'); if(projectsHelper) projectsHelper.style.display = 'block'; updateCalculator(); } function copyResults() { var primaryResult = document.getElementById('primary-result').textContent; var basePlanCost = document.getElementById('basePlanCost').textContent; var addOnsCost = document.getElementById('addOnsCost').textContent; var totalProjects = document.getElementById('totalProjects').textContent; var selectedPlan = document.getElementById('planSelect').value.toUpperCase(); var users = document.getElementById('users').value; var projects = document.getElementById('projects').value; var historicalData = document.getElementById('historicalData').value; var apiAccess = document.getElementById('apiAccess').value; var accountManager = document.getElementById('accountManager').value; var assumptions = [ "Selected Plan: " + selectedPlan, "Number of Users: " + users, "Number of Projects: " + projects, "Historical Data: " + historicalData, "API Access: " + apiAccess, "Dedicated Account Manager: " + accountManager ]; var textToCopy = "— Semrush Pricing Estimate —\n\n"; textToCopy += "Estimated Monthly Cost: " + primaryResult + "\n\n"; textToCopy += "Breakdown:\n"; textToCopy += "- Base Plan Cost: " + basePlanCost + "\n"; textToCopy += "- Add-on Costs: " + addOnsCost + "\n"; textToCopy += "- Projects Utilized: " + totalProjects + "\n\n"; textToCopy += "Key Assumptions:\n"; textToCopy += assumptions.join("\n") + "\n"; // Use navigator.clipboard for modern browsers if (navigator.clipboard && navigator.clipboard.writeText) { navigator.clipboard.writeText(textToCopy).then(function() { alert('Results copied to clipboard!'); }).catch(function(err) { console.error('Failed to copy text: ', err); fallbackCopyTextToClipboard(textToCopy); // Fallback for older browsers }); } else { fallbackCopyTextToClipboard(textToCopy); // Fallback for older browsers } } function fallbackCopyTextToClipboard(text) { var textArea = document.createElement("textarea"); textArea.value = text; // Avoid scrolling to bottom textArea.style.top = "0"; textArea.style.left = "0"; textArea.style.position = "fixed"; document.body.appendChild(textArea); textArea.focus(); textArea.select(); try { var successful = document.execCommand('copy'); var msg = successful ? 'successful' : 'unsuccessful'; alert('Fallback: Copying text command was ' + msg); } catch (err) { console.error('Fallback: Oops, unable to copy', err); alert('Could not copy text. Please copy it manually.'); } document.body.removeChild(textArea); } // Initialize calculator on page load window.onload = function() { updateCalculator(); initializeChart(); // Initialize chart on load };

Leave a Comment