diff --git a/backend/db/crud.py b/backend/db/crud.py
index 6315054655b56f50af8d58009d7c874dd7f8a7d3..5bff687aae324160f3fccbc1f52abc0de6eed804 100644
--- a/backend/db/crud.py
+++ b/backend/db/crud.py
@@ -125,3 +125,44 @@ def delete_news(id: int, db: Session):
     else:
         db.query(models.News).filter(models.News.id == id).delete()
     db.commit()
+
+
+# Define CRUD operation for the opening hours
+
+def get_opening_hours(place: str, db: Session):
+    """ Get the opening hours for the given place """
+    opening_hours = db.query(
+        models.OpeningHours
+        ).filter(
+            models.OpeningHours.place == place
+        ).order_by(
+            models.OpeningHours.day, models.OpeningHours.timeslot.desc()
+        ).all()
+    return opening_hours
+
+
+def get_timeslot(place: str, day: int, timeslot: bool, db: Session):
+    """ Get the opening hours for the given place and timeslot"""
+    opening_hours = db.query(models.OpeningHours).filter(
+        models.OpeningHours.place == place,
+        models.OpeningHours.day == day,
+        models.OpeningHours.timeslot == timeslot).first()
+    return opening_hours
+
+
+def create_opening_hours(new_opening_hours: schemas.OpeningHoursBase, db: Session):
+    """ Add opening hours to the database """
+    db_opening_hours = models.News(**new_opening_hours.dict())
+    db.add(db_opening_hours)
+    db.commit()
+    db.refresh(db_opening_hours)
+    return db_opening_hours
+
+
+def delete_opening_hours(id: int, db: Session):
+    """ Delete the opening hours with the matching id """
+    if id == 0:
+        db.query(models.OpeningHours).delete()
+    else:
+        db.query(models.OpeningHours).filter(models.OpeningHours.id == id).delete()
+    db.commit()
diff --git a/backend/db/models.py b/backend/db/models.py
index 898bf95484427efadafd09f73b590769fb229cea..58c3afa8be59b81ba9007d8365c350accd08d761 100644
--- a/backend/db/models.py
+++ b/backend/db/models.py
@@ -1,7 +1,7 @@
 """
 Models of the database for magasin app
 """
-from sqlalchemy import Column, Integer, DateTime, Float, Interval, String, Text
+from sqlalchemy import Column, Integer, DateTime, Float, Interval, String, Text, Boolean
 
 from db.database import Base
 
@@ -28,8 +28,8 @@ class Comments(Base):
 
 
 class News(Base):
-    """Records sql table model"""
-    __tablename__ = "News sql table model"
+    """News sql table model"""
+    __tablename__ = "news"
 
     id = Column(Integer, primary_key=True, index=True)
     title = Column(String(50))
@@ -37,3 +37,17 @@ class News(Base):
     published_at = Column(DateTime)
     end_date = Column(DateTime)
     place = Column(String(10))
+
+
+class OpeningHours(Base):
+    """OpeningHours sql table model"""
+    __tablename__ = "opening_hours"
+
+    id = Column(Integer, primary_key=True, index=True)
+    place = Column(String(10))
+    day= Column(Integer)
+    timeslot = Column(Boolean)
+    open_hour = Column(Integer)
+    open_minute = Column(Integer)
+    close_hour = Column(Integer)
+    close_minute = Column(Integer)
diff --git a/backend/db/schemas.py b/backend/db/schemas.py
index 71fe821a3c09d88cbdee83cfc214945fcc3518fd..474dd946002ebc435bb8269c1b37816198948068 100644
--- a/backend/db/schemas.py
+++ b/backend/db/schemas.py
@@ -52,3 +52,22 @@ class News(NewsBase):
 
     class Config:
         orm_mode = True
+
+
+class OpeningHoursBase(BaseModel):
+    """Database opening_hours base schema"""
+    place: str = Field(..., title="Name of the RU corresponding the given record")
+    day: int = Field(..., title="Day of the week")
+    timeslot: bool = Field(..., title="Service slot (True for midday, False for evening)")
+    open_hour: int = Field(..., title="Hour of the opening time")
+    open_minute: int = Field(..., title="Minute of the opening time")
+    close_hour: int = Field(..., title="Hour of the closing time")
+    close_minute: int = Field(..., title="Minute of the closing time")
+
+
+class OpeningHours(OpeningHoursBase):
+    """Database opening_hours base schema"""
+    id: int
+
+    class Config:
+        orm_mode = True
diff --git a/backend/main.py b/backend/main.py
index d4d2ed49d8b5d2e69c4a45a7bcc8b1006f389a8b..705da50639356f7b9c1ef11196c6590c926158db 100644
--- a/backend/main.py
+++ b/backend/main.py
@@ -4,7 +4,7 @@ from dotenv import load_dotenv
 import os
 
 from db import database, models
-from routers import stats, comments, news
+from routers import stats, comments, news, opening_hours
 
 app = FastAPI(docs_url="/api/docs", openapi_url="/api/openapi.json")
 
@@ -34,6 +34,7 @@ def on_startup():
 app.include_router(stats.router)
 app.include_router(comments.router)
 app.include_router(news.router)
+app.include_router(opening_hours.router)
 
 
 """
diff --git a/backend/routers/opening_hours.py b/backend/routers/opening_hours.py
new file mode 100644
index 0000000000000000000000000000000000000000..5f2725e27dc411a1cf2ca7b7afc1950941537303
--- /dev/null
+++ b/backend/routers/opening_hours.py
@@ -0,0 +1,29 @@
+from fastapi import APIRouter, Depends
+from sqlalchemy.orm import Session
+from typing import List
+
+from db import schemas, crud
+from db.database import get_db
+
+
+router = APIRouter(prefix="/api/opening_hours", tags=["opening_hours"])
+
+
+@router.get('/{place}', response_model=List[schemas.OpeningHours])
+async def get_opening_hours(place: str, page: int = 1, db: Session = Depends(get_db)):
+    return crud.get_opening_hours(place, page, db)
+
+
+@router.get('/{place}/{day}/{timeslot}', response_model=List[schemas.OpeningHours])
+async def get_timeslot(place: str, day: int, timeslot: bool, db: Session = Depends(get_db)):
+    return crud.get_timeslot(place, day, timeslot, db)
+
+
+@router.post('/{place}', response_model=schemas.OpeningHours)
+async def create_opening_hours(place: str, opening_hours: schemas.OpeningHoursBase, db: Session = Depends(get_db)):
+    return crud.create_opening_hours(place, opening_hours, db)
+
+
+@router.delete('/{id}', response_model=None)
+async def delete_opening_hours(id: int, db: Session = Depends(get_db)):
+    return crud.delete_opening_hours(id, db)