diff --git a/include/zim/archive.h b/include/zim/archive.h
index dd55d8cf9..fe10c4043 100644
--- a/include/zim/archive.h
+++ b/include/zim/archive.h
@@ -544,7 +544,7 @@ namespace zim
   class LIBZIM_API Archive::iterator
   {
     public:
-      using iterator_category = std::bidirectional_iterator_tag;
+      using iterator_category = std::input_iterator_tag;
       using value_type = Entry;
       using pointer = Entry*;
       using reference = Entry&;
diff --git a/include/zim/search_iterator.h b/include/zim/search_iterator.h
index 3d81f280a..8791eb1f8 100644
--- a/include/zim/search_iterator.h
+++ b/include/zim/search_iterator.h
@@ -36,7 +36,7 @@ class LIBZIM_API SearchIterator
 {
     friend class zim::SearchResultSet;
     public:
-        using iterator_category = std::bidirectional_iterator_tag;
+        using iterator_category = std::input_iterator_tag;
         using value_type = Entry;
         using pointer = Entry*;
         using reference = Entry&;
diff --git a/include/zim/suggestion_iterator.h b/include/zim/suggestion_iterator.h
index 69e962cc9..06105584b 100644
--- a/include/zim/suggestion_iterator.h
+++ b/include/zim/suggestion_iterator.h
@@ -36,10 +36,10 @@ class LIBZIM_API SuggestionIterator
     typedef Archive::iterator<EntryOrder::titleOrder> RangeIterator;
     friend class SuggestionResultSet;
     public:
-        using iterator_category = std::bidirectional_iterator_tag;
+        using iterator_category = std::input_iterator_tag;
         using value_type = SuggestionItem;
         using pointer = SuggestionItem*;
-        using referenc = SuggestionItem&;
+        using reference = SuggestionItem&;
 
         SuggestionIterator() = delete;
         SuggestionIterator(const SuggestionIterator& it);