diff --git a/src/JobsMedical.Web/Pages/Search.cshtml b/src/JobsMedical.Web/Pages/Search.cshtml
new file mode 100644
index 0000000..a68ab5d
--- /dev/null
+++ b/src/JobsMedical.Web/Pages/Search.cshtml
@@ -0,0 +1,56 @@
+@page
+@model JobsMedical.Web.Pages.SearchModel
+@{
+ ViewData["Title"] = Model.HasQuery ? $"جستجو: {Model.Q}" : "جستجو";
+ ViewData["q"] = Model.Q; // drives highlighting in the cards
+ ViewData["NoIndex"] = true;
+}
+
+
+
+
جستجو
+
+ @if (Model.HasQuery)
+ {
+
@JalaliDate.ToPersianDigits(Model.Total.ToString()) نتیجه برای «@Model.Q»
+ }
+
+
+
+
+ @if (!Model.HasQuery)
+ {
+
یک عبارت بنویس تا در شیفتها، استخدامها و آمادهبهکارها جستجو شود. هر کلمه باید جایی پیدا شود.
+ }
+ else if (Model.Total == 0)
+ {
+
نتیجهای پیدا نشد. عبارت دیگری امتحان کن.
+ }
+ else
+ {
+ @if (Model.Shifts.Count > 0)
+ {
+
شیفتها (@JalaliDate.ToPersianDigits(Model.Shifts.Count.ToString()))
همه شیفتها ←
+
+ @foreach (var s in Model.Shifts) {
}
+
+ }
+ @if (Model.Jobs.Count > 0)
+ {
+
استخدامها (@JalaliDate.ToPersianDigits(Model.Jobs.Count.ToString()))
همه استخدامها ←
+
+ @foreach (var j in Model.Jobs) {
}
+
+ }
+ @if (Model.Talent.Count > 0)
+ {
+
آماده به کار (@JalaliDate.ToPersianDigits(Model.Talent.Count.ToString()))
همه ←
+
+ @foreach (var t in Model.Talent) {
}
+
+ }
+ }
+
diff --git a/src/JobsMedical.Web/Pages/Search.cshtml.cs b/src/JobsMedical.Web/Pages/Search.cshtml.cs
new file mode 100644
index 0000000..e23253d
--- /dev/null
+++ b/src/JobsMedical.Web/Pages/Search.cshtml.cs
@@ -0,0 +1,68 @@
+using JobsMedical.Web.Data;
+using JobsMedical.Web.Models;
+using JobsMedical.Web.Services.Scraping;
+using Microsoft.AspNetCore.Mvc;
+using Microsoft.AspNetCore.Mvc.RazorPages;
+using Microsoft.EntityFrameworkCore;
+
+namespace JobsMedical.Web.Pages;
+
+///