GSC_KEYWORD_POSITION
Get average position for a specific keyword from Google Search Console.
=GSC_KEYWORD_POSITION(query, startDate, endDate, [siteUrl])Returns: 2D array with columns: Keyword, Position, Clicks, Impressions, CTR
Overview
GSC_KEYWORD_POSITION lets you instantly check the average search position for any specific keyword your site ranks for in Google. Simply provide the keyword, a date range, and optionally a site URL to get back the average position along with clicks, impressions, and CTR for that exact query. This is the fastest way to answer the question "Where does my site rank for this keyword?" directly from your spreadsheet.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | Yes | The exact search query (keyword) to look up. |
startDate | string | Yes | Start date in "YYYY-MM-DD" format or relative format like "-30d" for 30 days ago. |
endDate | string | Yes | End date in "YYYY-MM-DD" format or relative format like "-1d" for yesterday. |
siteUrl | string | No | The site URL property from Search Console. If omitted, uses the default connected property. |
Examples
Check position for a target keyword
Check where your site ranks for "project management software" over the last 30 days.
=GSC_KEYWORD_POSITION("project management software", "-30d", "-1d")Output
| Keyword | Position | Clicks | Impressions | CTR |
| project management software | 4.2 | 980 | 22100 | 4.4% |
Track a branded keyword
Verify that your site holds position 1 for your brand name in the last week.
=GSC_KEYWORD_POSITION("mycompany", "-7d", "-1d")Output
| Keyword | Position | Clicks | Impressions | CTR |
| mycompany | 1.0 | 2400 | 3100 | 77.4% |
Keyword from cell reference
Use a cell reference for the keyword so you can build a rank tracker with a list of keywords in column A.
=GSC_KEYWORD_POSITION(A2, "-30d", "-1d")Output
| Keyword | Position | Clicks | Impressions | CTR |
| best crm software | 6.8 | 320 | 12500 | 2.6% |
Compare keyword position across months
Get the average position for January 2025 to compare with other months for trend analysis.
=GSC_KEYWORD_POSITION("email marketing tips", "2025-01-01", "2025-01-31")Output
| Keyword | Position | Clicks | Impressions | CTR |
| email marketing tips | 5.3 | 410 | 9800 | 4.2% |
Check position for a specific property
Look up keyword position for a specific Search Console domain property.
=GSC_KEYWORD_POSITION("healthy recipes", "-30d", "-1d", "sc-domain:healthblog.com")Output
| Keyword | Position | Clicks | Impressions | CTR |
| healthy recipes | 3.5 | 1850 | 28000 | 6.6% |
Use Cases
Keyword Rank Tracking Dashboard
SEO professionals build rank tracking spreadsheets with target keywords listed in a column and GSC_KEYWORD_POSITION checking each one, providing a free alternative to expensive rank tracking tools.
SEO Campaign Impact Measurement
Marketing teams measure the impact of SEO campaigns by comparing keyword positions before and after content changes, link building efforts, or technical optimizations.
Brand Monitoring
Brand managers monitor position 1 rankings for brand name queries and variations, quickly identifying any issues where competitors or negative content might be outranking official brand pages.
Competitor Keyword Gap Tracking
SaaS companies track their positions for competitor comparison keywords like "product A vs product B" to ensure they maintain strong visibility when potential customers are evaluating alternatives.
Local SEO Position Monitoring
Local businesses monitor positions for location-specific keywords like "dentist in Chicago" or "plumber near downtown" to ensure their local SEO efforts are maintaining strong rankings.
Post-Migration Position Verification
After site migrations or redesigns, development teams check positions for critical keywords to verify that the migration did not cause ranking drops and catch any issues early.
Pro Tips
Build a rank tracker by listing target keywords in column A, then use =GSC_KEYWORD_POSITION(A2, "-30d", "-1d") across rows. Copy down for all keywords.
Create month-over-month tracking by putting each month's data in a separate column and using conditional formatting to highlight position improvements (green) and drops (red).
For high-volume keyword tracking (50+ keywords), use GSC_TOP_QUERIES with a high limit instead and VLOOKUP to find each keyword. This is more API-efficient than individual calls.
Set up alerts using Apps Script triggers: if a critical keyword's position drops below a threshold, automatically send yourself an email notification.
Track both the head keyword and long-tail variations (e.g., "crm software" and "best crm software for small business") to get a comprehensive view of your ranking strength for a topic.
Rank tracking is one of the most fundamental SEO activities, and GSC_KEYWORD_POSITION makes it effortless by pulling position data from the most authoritative source available: Google's own Search Console data. Unlike third-party rank trackers that estimate positions by scraping search results, this function returns actual average position data calculated from real impressions your site received in Google search. This means the data is 100% accurate for your specific site and reflects the true average across all variations of the search (different locations, devices, and personalization factors).
The function is perfect for building keyword rank tracking spreadsheets. List your target keywords in a column and use GSC_KEYWORD_POSITION with cell references to check each one. By running this periodically or for different date ranges, you can track ranking trends over time, measure the impact of SEO changes, and report on keyword performance to stakeholders. The single-keyword focus makes it ideal for monitoring your most critical keywords, while GSC_TOP_QUERIES is better suited for broad keyword discovery. For detailed position trends by day, combine this with GSC_QUERY using the "date" dimension.
Common Errors
NO_DATA: No search data found for the specified queryCause: Your site does not rank for the specified keyword, or it had no impressions during the date range.
Fix: Verify the exact keyword spelling. Search Console normalizes queries to lowercase, so capitalization does not matter. Try a wider date range or check GSC_TOP_QUERIES to confirm the keyword appears in your search data. Remember that very new or very rare queries may not have data.
NOT_AUTHORIZED: Access to Search Console property deniedCause: The connected Google account lacks permission for the Search Console property.
Fix: Ensure your account has at least "Full" permission in Search Console > Settings > Users and permissions. If using the siteUrl parameter, verify the property string matches exactly as it appears in Search Console.
INVALID_DATE: Date range exceeds maximum allowed periodCause: The date range spans more than 16 months, which exceeds Search Console's data retention period.
Fix: Limit your date range to within the last 16 months. Search Console does not retain data older than 16 months. For historical tracking, export and store position data regularly in separate sheets.
Frequently Asked Questions
Average position is the mean position of your site in search results for that query, weighted by impressions. If your site appeared at position 3 for 80% of impressions and position 8 for 20%, the average would be approximately 4.0. It reflects your typical ranking across all searches for that keyword, including variations by location, device, and personalization.
Yes, the query parameter must match exactly as reported by Search Console. Google normalizes queries to lowercase and trims whitespace, but the core query must be exact. "project management" and "project management tools" are two different queries. Use GSC_TOP_QUERIES to discover the exact query strings Google reports.
If your site had no impressions for the specified query during the date range, the function returns an empty result with only the header row. This means your site either does not rank for that keyword or ranks beyond the positions that generate impressions (typically beyond position 100).
GSC_KEYWORD_POSITION uses official Google data, making it the most accurate source for your actual average position. Third-party tools estimate positions by scraping search results from specific locations, which may not represent the full picture. However, GSC data is an average across all searches, while third-party tools show a specific point-in-time position from a specific location.
GSC_KEYWORD_POSITION gives you the average position for the entire date range. For daily position data, use GSC_QUERY with the "date" dimension and a query filter to get a day-by-day breakdown of position changes for a specific keyword.
Yes, Search Console position data includes all types of search results. If your site appears in a featured snippet, it is typically counted as position 1. Other SERP features like People Also Ask, image packs, or knowledge panels may also affect the position numbering.
While you can use GSC_KEYWORD_POSITION with cell references to check many keywords, each formula makes a separate API call. For checking hundreds of keywords, consider using GSC_TOP_QUERIES with a high limit instead, which returns all your ranking keywords in a single request. You can then use VLOOKUP or INDEX/MATCH to find specific keywords.
Related Functions
Start using GSC_KEYWORD_POSITION today
Install Unlimited Sheets to get GSC_KEYWORD_POSITION and 41 other powerful functions in Google Sheets.