diff --git a/README.md b/README.md
index 3db0db7..7205779 100644
--- a/README.md
+++ b/README.md
@@ -99,12 +99,14 @@
 char *get_version();
 uint64_t get_word_id(COLLOCATORDB *db, const char *word);
 uint64_t get_corpus_size(COLLOCATORDB *db);
+uint64_t get_word_frequency(COLLOCATORDB *db, uint64_t w);
 ```
 
 ## Changes
 
 * v1.4.0.9000 (unpublished)
   * added `get_corpus_size()`, which returns the total token count
+  * added `get_word_frequency()`, which returns the absolute frequency of a word in the corpus
 
 * v1.4.0 (2024-11-23)
   * added `collocatordb_query` command line tool
diff --git a/src/collocatordb.cc b/src/collocatordb.cc
index 444a030..57a01d9 100644
--- a/src/collocatordb.cc
+++ b/src/collocatordb.cc
@@ -311,6 +311,8 @@
 
   uint64_t getCorpusSize() const;
 
+  uint64_t getWordFrequency(uint64_t w1);
+
   CollocatorDB(const char *db_name, bool read_only);
 
   // public interface of CollocatorDB.
@@ -813,6 +815,10 @@
   return total;
 }
 
+uint64_t CollocatorDB::getWordFrequency(uint64_t w1) {
+  return _vocab[w1].freq;
+}
+
 string CollocatorDB::collocators2json(uint32_t w1,
                                                const vector<Collocator>& collocators) {
   ostringstream s;
@@ -923,6 +929,10 @@
 
 DLL_EXPORT uint64_t get_corpus_size(COLLOCATORS *db) { return db->getCorpusSize(); };
 
+DLL_EXPORT uint64_t get_word_frequency(COLLOCATORS *db, uint64_t w1) {
+  return db->getWordFrequency(w1);
+}
+
 #ifdef __clang__
 #pragma clang diagnostic push
 #endif
diff --git a/src/collocatordb.h b/src/collocatordb.h
index 8bb3402..74f2f0e 100644
--- a/src/collocatordb.h
+++ b/src/collocatordb.h
@@ -131,5 +131,6 @@
 extern char *get_version();
 extern uint64_t get_word_id(COLLOCATORDB *db, const char *word);
 extern uint64_t get_corpus_size(COLLOCATORDB *db);
+extern uint64_t get_word_frequency(COLLOCATORDB *db, uint64_t w1);
 
 #endif
diff --git a/tests/basic_test.c b/tests/basic_test.c
index 276837a..d6d236e 100644
--- a/tests/basic_test.c
+++ b/tests/basic_test.c
@@ -141,6 +141,15 @@
   TEST_MSG("Unexpected corpus size: %lu", size);
 }
 
+void test_get_word_frequency() {
+  COLLOCATORDB* cdb = open_collocatordb(dbpath);
+  TEST_ASSERT(cdb != NULL);
+  int w1 = get_word_id(cdb, "Test");
+  uint64_t freq = get_word_frequency(cdb, w1);
+  TEST_CHECK(freq == 3);
+  TEST_MSG("Unexpected word frequency: %lu", freq);
+}
+
 TEST_LIST = {
     { "open database for reading", test_open_db },
     { "get word", test_get_word },
@@ -151,6 +160,7 @@
     { "version function", test_version_function },
     { "get word id", test_get_word_id },
     { "get corpus size", test_get_corpus_size},
+    { "get word frequency", test_get_word_frequency},
     { "collocatordb_query command line tool", test_collocatordb_query_command_line_tool},
     { NULL, NULL }
 };
